吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 66530|回复: 222
收起左侧

[原创] 新手追某软件注册码,大牛请飞过

    [复制链接]
双菜鱼 发表于 2014-12-12 18:15
本帖最后由 Shark恒 于 2014-12-12 20:27 编辑

【软件名称】:XX录像专家
【下载地址】:http://www.tlxsoft.com/
【加壳方式】: 无
【操作平台】: XP SP3
【作者声明】: 只是出于对破解感兴趣,没有其他目的。以下分析破解仅用于交流,请支持正版软件。首先使用PEID查壳,没有加壳,BC++编写的软件。
peid.png
有试用提示框,输入假码会有字符串提示。
欢迎注册.png
注册失败.png
无壳又有字符串提示,果断搜索一下字符串---"注册失败"
1.png
双击字符串,来到下图位置,我们在前面一个call下断
2.png
当我们输入用户名和假码后,点击“注册”,程序会在od中断在上图位置,这时候程序开始对我们输入的假码进行判断。
首先看到一个cmp eax,0x32,然后有个jge的判断,一般思维就是判定我们输入的假码位数,所以我们从上面的call单步到cmp eax,0x32,
这时发现eax=9,(我输入的是123456789),也就是我们输入的假数位数必须大于等于50,它才会跳过第一个注册失败。
所以我们随便输入50个注册码后,再来这个位置继续单步,发现它能跳过这个注册失败。继续单步下去到了下图位置(我输入的是11111222223333344444555556666677777888889999900000,全部输入一样的话,就不知道它是取哪个值进行判断了)
3.png
单步到了je的位置,发现je没跳,又跑到注册失败位置去了。所以解决这一步的目标就是把让比较的两个值相等。从而跳过错误提示。
此时我们先假设它是关键跳,按常规思维,那么跳的前一个call一般也就是关键call了。进去看看这里有什么东西。
00000.png
F7单步进入之后,在第三个call的位置发现这里它了我输入的假码的最后五位。进去看看它要干嘛先。继续F7跟进后只有一个子call,继续跟进到下图位置
QQ截图20141212132653.png
这个段有长,于是我把段首复制到跟算法相邻的位置。具体算法就是图中所解释的。(朋友们测试的时候在假码最后五位输入不要跟我一样是00000,就能看出eax值的变化)这里是一个数列吧,每一步计算的公式都是 y2 = A * y1+ ebx,y = eax的值,- -这个能表达的就这么多,有兴趣的朋友自己写写。当它们计算完了的时候,就把eax值放到下图中的地址去,进行比较了。
12.png
我这里是0和5920进行比较,如果我们计算出来的eax值=5920,那么Je的跳转就会实现,逆着计算,方法写在图上,每一步的余数合起来(从右到左)就是我们应该输入的最后五位注册码。(这里已经知道最后五位是怎么来的了)然后我这里直接改标志位跳过,继续看一下步的判定是什么。
00484E18   .  E8 57E0F7FF   call 屏录专家.00402E74                       ;  取名字
00484E69   .  E8 06E0F7FF   call 屏录专家.00402E74                       ;  机器码
单步经过这两个call可从寄存器看到输入的用户名和提示的机器码。机器码跟电脑直接显示的不一样,调换了两个位置。(把它放到文本对比就明了)继续单到来到下图位置
34.png
这里是把用户名与机器码进行计算,结果放入edi.具体步骤如上图,大概意思就是用户名每一位分别去异或机器码,带符号放到那个地址,然后把异或的值乘以(位数-1),如我输入的注册名第一位是w, 机器码第一位是2,第一次edi值就是(w xor 2) * (1-1)=0,,,之后进行累加,文本不够的用0代替去参与异或。最后值保留在EDI是以十六进制的形式。循环完给这个值加上一个常数3039。到这一步我们继续F8单步下去

56.png
经过上面那个call,可以从寄存器窗口看到5个数字,我进去call里面看过,就是上一步的值除以A然后取余数组成,跟上面标红色文字那一步一样计算方式。
然后上图中的jnz是跳向失败,意思就是eax和ecx的值不等就跳。eax的值是产生的5个数字的值转为16进制ASCII后减14所得,有五个数字这里就意味着要比较5次。ecx的值怎么来的呢?我们右键选择“到数据窗口跟随地址”
78.png
比较5次就是跟下面5个位置分别进行比较了。我们先让它跳向注册失败,然后重新点注册,观察一下这个值是在什么时候被赋到这个地址上。这里可以选择下断点的方法或才直接观察,我选择后者。
OD里发现经过下面这个call时,地址被赋值……然后我们进入call 里面去.
00484D8A   .  E8 89B7F9FF   call 屏录专家.00420518                       ;  这里是前十位注册码的确认(软件是先用注册码计算出一个值,保留在上图位置,再把前5个地址的值分别进行比较,这里为什么说是前十位注册码的确认呢,请耐心往下看吧- -)
11.png
进行call后然后单步,从寄存器和堆栈都会看到输入的假码,这里先是把假码的位置进行了对调,一开始我也没留意这些代码的意思,就是看到堆栈出来两串数字,但个别位置不一样了,- -然后才在这个call里面一步一步走发现的。走到断点处,假码比较被完成转换。要进行计算了。
222.png
计算方法就如上图所示了,假码两两组合成十进制整数,再转为十六进制,再ebx相加再加9保留到画圈的位置。ebx=2*次数-1,这样子比较好理解。因为上一步是要比较5个数字,那么这一步就要生成与之对应的五个数字,因为是两两组合,所以这里就会确定了前十个注册码了。(其他先不管,我们是走一步看一步的哈)跳出这个计算call继续往下走
52.png
当我们输入的十个注册码正确时,jnz就不会再那么快的跳到失败的地方,在比较第四个数字的时候,它还进行了一步计算,计算出一个值,计算方法如图所示,这个生成出来的值一开始我也不知道是干嘛用的,姑且往下走吧,走一步看一步。
23.png
这里有个小循环,右键跟随到地址就知道是什么与什么相加,简单说明下,就假码在紫色文字那一步里计算的结果存在地址后,把它们进行相加,判断0x13次(十进制就是19次)把就相当于前38个假码计算的结果了,然后把它除以A,余数+30,再把值保留到内在地址。然后继续判断第9和第10位注册码。判定正确后来到下图。

上图画图部分如果相等,je就会跳过jl,如果第39和第40位这两个假码计算出来的结果小于0x41,那么就会跳向失败,所以解决这个问题的方案就有两个了,一个是计算的值要大于jl,一个就是要对应前面38个的值。(我不太懂jl是不是小于的意思,所以还是建议采取第二种方案吧),解决这个问题我们继续往下走
222.png
这里就是最后一个跳向注册失败的地方了,所以也就是要解决最后一个问题……这里就用到了上面生成的53FC,绿色文字那一步,把它作为被除数,A为除数,余数保留在edx,..然后把保留假码计算结果的地址的第六位放到eax,-41-余数,值为0则跳向成功,否则失败。也就是说这一步决定了第11和第12位注册的取值了。把这两位的取值也算出来然后就大功告成了。---------------------------------------------------------------
最后说一下注册机的写法,先计算 用户名和机器码的计算结果m,再通过取余,计算出那5个数字。根据5个数字的16进制ASCII值计算前十个注册码。再把m值拿去绿色字体那一步,计算出一个结果,这个结果决定第11和第12位注册码的取值,再随机生成26个注册码加到后面凑38个,再用38个的值求出第39和第40位的注册码,再随机生成5个,凑成45个注册码。第46-50位的注册码也是就最开始的作判定的位置,即第六张图片的位置,箭头所指上面的call才是计算call,它是用过前45位进行计算来得一个结果n,再把n除以a进行取余,最后凑起来就是50个。再把50个进行换位置,最后结果肯定就是注册码了。写注册机的时候还要把机器码的位置进制对换,因为软件计算之前会把我们看到的机器码进行换位置。(都是数学上事,所以大家都能解决)
--------------------------------------------------------------------------------------------
好了,教程就到这里了,我刚学不久,请大牛勿嘲笑,有什么不足之处还望指出,谢谢观看。
虽然不是首发了,不过对有用的新手可以看看吧,我只要CB和热心呐,附结果图
QQ截图20141212181210.png



21321.png

点评

分析的很好,还要继续,真的注册码不是50位,应该有更多。  发表于 2014-12-16 09:10
这个只是在注册界面显示已注册而已,还有功能上的验证没有解决  发表于 2014-12-13 15:37

免费评分

参与人数 45热心值 +45 收起 理由
FanqdR + 1 好详细,赞一个。。。。。。
LadyGaga + 1 新手只是熟悉一下过程
绝影 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
wnfight + 1 我很赞同!
只不过去是了 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
a5431191 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩.
ii23456ii + 1 新手向你学习
新兴1 + 1 我很赞同!
qliujinp + 1 我很赞同!
repobor + 1 我很赞同!
wakao478 + 1 谢谢@Thanks!真的很厉害
myfcai + 1 我很赞同!
noise + 1 谢谢@Thanks!
zusheng + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩.
chaojiak47 + 1 谢谢@Thanks!
小黑and小白 + 1 用心去做好想做的事
功夫孬 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
byzcsq + 1 热心回复!
xcz668 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
天马网络 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
huafeng + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩.
四裤全输 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
连晋 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
yutao531315 + 1 撸主够厉害..分析得够详细
vipcrack + 1 还是假注册的,注册码几百位才是真的,50的.
liuhiaipeng + 1 谢谢@Thanks!
FXW@大神 + 1 我很赞同!
szx503 + 1 好详细 楼主下了很多功夫!
最土的土匪 + 1 好像有注册机
amscracker + 1 膜拜神兽啊!走向大牛之路了
gj419 + 1 谢谢@Thanks!
ingdear + 1 我很赞同!
tmsdy + 1 我很赞同!
风清扬 + 1 感谢分享经验@Thanks!
单曲循环lee + 1 热心回复!
wanttobeno + 1 谢谢@Thanks!
haoren + 1 求视频
caijunqill + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
夜话飘渺 + 1 已经处理,感谢您对吾爱破解论坛的支持!
刘宏伟大人丶 + 1 已答复!
Ericky + 1 建议自己写个注册机玩玩~都分析了,不写可.
Shark恒 + 1 非常细致!精一个
ablack + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩.
gxd0419 + 1 谢谢@Thanks!
逍遥枷锁 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 双菜鱼 发表于 2015-1-30 20:25
dsong 发表于 2015-1-30 18:12
先收藏下,以后可以做参考。

P.S.: 50位注册码就肯定不是完美的了。还有许多算法在软件附带的播放器里面 ...

因为只知道它确实不完美,有时没水印,有时更改设置就出现水印,谢谢大大指点改进方向
zc123 发表于 2014-12-12 18:30
逍遥枷锁 发表于 2014-12-12 18:39
精彩图文教程,非常感谢,希望以后多多发这样的帖子,谢谢,学习了。

免费评分

参与人数 1热心值 +1 收起 理由
刘宏伟大人丶 + 1 已答复!

查看全部评分

gxd0419 发表于 2014-12-12 18:43
新人喜欢这样详细的帖子
du8912121 发表于 2014-12-12 18:57
我表示追码的人都是高手  个人感觉爆破爽
不灭咒痕 发表于 2014-12-12 18:58
楼主厉害    我当初也玩过这个   用的爆破   没搞定~我仔细看看楼主的试试能不能写出注册机
ablack 发表于 2014-12-12 18:59
真详细,。我是管理员就加精
8585859 发表于 2014-12-12 19:16
我看都看不懂,初学者啊 期待大神的指点
hangchao1990 发表于 2014-12-12 19:47 来自手机
论坛里人才济济啊,学习了
zwant 发表于 2014-12-12 19:53
好文章建议管理员设精
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-26 18:45

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表