wang1234561211 发表于 2015-9-6 12:33

【新手教程】考真系列之Windows7模块软件-追码教程

本帖最后由 wang1234561211 于 2015-9-14 18:48 编辑

写在前面:1. 经测试本教程方法适用于该网站大部分软件。(我刚刚测试了四五款,验证流程都是一样的)
                  2. 本教程,其实非常简单,只是作为新人尽量写的足够详细。所以别以为太长都看不懂了,其实不会的。
                  3. 作为新手写的,如有违规,不合要求的地方,随时提醒,随时改正哈。如有纰漏,在所难免,往大神们指点一二。                                    
                还是那句话,本教程不奢望任何CB和热心,只为帮助像我一样的新人,仅此而已。同时也为了记录下自己的学习过程。

在原创区看到有人发这个软件,一直想着自己试试能破解不,也摸索了好几次(之前一直想着爆破,没找到方法,今天换了个思路)。才找到方法,论坛搜索了下没这个软件的破解教程,就打算写出来,分享下。
本文仅仅新手教程,是我自己今天上午接手这个软件一点点分析的思路。而不是自己分析好之后,直接找关键的地方,找到注册码。感觉这样帮助不了像我一样迷茫的新人。
1. 下载原版软件
    官方下载地址。https://pan.sohu.net/s/NDA1ODMsbWJxdWs.htm
2. 下载安装。查壳



3. 分析软件
首先运行软件分析下注册流程,方便后面的工作。打开软件注册,输入15个a。然后选择不联网注册。(还是喜欢本地验证,怕联网验证搞不定,就没尝试。)



在新打开的页面,左下角输入验证码。我输入的是22222-22222。然后点击注册。看错误提示,记录下(注册失败,请核实注册码,机器码和验证码),记得留意下机器码,别随后分析把机器码当成了注册码(我之前都烦了这个错误)



4.OD载入分析
   F9运行程序。按chtl+G,输入00401000。来到代码段。(也可以,按alt+E,然后选择C:\kaozhen\Windows7\Windows7.exe ,双击即可)。右键-中文搜索引擎-智能搜索-ctrl+F。输入(注册失败),然后找到这个地方。



双击进入,来到如下代码。

004A77A0|.50            push eax
004A77A1|.E8 E1931C00   call Windows7.00670B87
004A77A6|.83C4 08       add esp,0x8
004A77A9|.68 60CA6D00   push Windows7.006DCA60                   ;            <div class="import_maintext">注册失败,请核实注册码,机器码和验证码!</div>\r\n
004A77AE|.68 060C0000   push 0xC06
004A77B3|.8D8D E4F3FFFF lea ecx,
004A77B9|.51            push ecx
004A77BA|.E8 54951C00   call Windows7.00670D13


然后F2下断。输入我们刚刚分析软件用的假码,点击注册。发现程序断下来了,证明这个地方是咱们要找的了。然后上下找找有没关键跳,可以跳过这里的,发现也并没有。然后想着会不会这是个子call,我们先出这个call。分析下,按ctrl+F9执行到返回(这个call的结尾,出call).接着F8,出这个cal。来到了这里。(我们在上面的call注释下)如图

00494953|.8B8D 7CE3FFFF mov ecx,
00494959|.E8 23051C00   call Windows7.00654E81
0049495E|.8B8D 7CE3FFFF mov ecx,
00494964|.E8 17250100   call Windows7.004A6E80                   ;错误call1
00494969|.8D8D 80E3FFFF lea ecx,
0049496F|.E8 5C40F7FF   call Windows7.004089D0
00494974|.8D85 80E3FFFF lea eax,


往下找,发现有两个两个地方跳过了错误call。



我们先分析第一个。右键下面的信息,然后跳转到跳过失败call的来源。



我们来到了这里。

0049488D|.8D8D A0E3FFFF lea ecx,
00494893|.E8 A810F7FF   call Windows7.00405940
00494898|.E9 7A010000   jmp Windows7.00494A17
0049489D|>68 C0010000   push 0x1C0
004948A2|.E8 79CDF6FF   call Windows7.00401620
004948A7|.8985 00E3FFFF mov ,eax                     ;Windows7.007C12F4


发现是个无条件跳转。跳过了错误,可为什么无条件跳转没实现,我们分析下。发现这个jmp下面有个从上面跳转过来的,我们按照上面同样的方法跟随过去。
来到了这个地方

00493FF6|.C645 FC 00    mov byte ptr ss:,0x0
00493FFA|.8D8D 6CE3FFFF lea ecx,
00494000|.E8 3B19F7FF   call Windows7.00405940
00494005|.833D D05F7B00>cmp dword ptr ds:,0x1
0049400C|.0F84 8B080000 je Windows7.0049489D
00494012|.E8 3999F7FF   call Windows7.0040D950
00494017|.8BC8          mov ecx,eax                              ;Windows7.007C12F4
00494019|.E8 42140600   call Windows7.004F5460
0049401E|.68 90E06C00   push Windows7.006CE090                   ;注册信息.txt
00494023|.E8 D8F7F8FF   call Windows7.00423800
00494028|.50            push eax                                 ;Windows7.007C12F4


我们先下断。

然后分析刚刚上面这个位置,下面的跳转是哪里跳过失败的。



我们发现有两个跳转跳到了同一个地方。

挨着跟随过去,第一个,直接来到了这个地方。JMP下面F2下断 (看上面的注释会发现,上面是判断输入注册码的位数的,所以不用句首下断了)

00493E1B   |.8D4D F0       lea ecx,
00493E1E   |.E8 1D1BF7FF   call Windows7.00405940
00493E23   |.8B85 74E3FFFF mov eax,
00493E29   |.E9 080C0000   jmp Windows7.00494A36
00493E2E   |>8B85 F4E2FFFF mov eax,


往上稍微看下,发现到了断首。
结果回去,再跟随另外的跳转看看
来到这里。

0049419C   |.8D4D F0       lea ecx,
0049419F   |.E8 9C17F7FF   call Windows7.00405940
004941A4   |.8B85 4CE3FFFF mov eax,
004941AA   |.E9 87080000   jmp Windows7.00494A36
004941AF   |>8D45 E4       lea eax,
004941B2   |.50            push eax                                 ;Windows7.007C12F4


同样发现,jmp下面有个跳转跳过了他,跟随上去,F2下断。

5. 追码

跳过错误call的地方都下断了,然后我们F9然程序运行。重新输入注册信息。点击注册,发现程序停下来了。然后我们F8单步,同时留意寄存器窗口,先出现了我们输入的验证码(假码)



继续单步分析,然后出现了机器码。到这里都要小心点了,估计要出关键了。



继续单步,会发现之前输入的注册码,也出现了。



刚好发现下面有个call。我们进F7跟进去看看。发现右下角,已经记录我们的刚刚假注册码、假验证码和机器码了。



继续单步,寄存器出现如下,再猜测会不会再比较验证码呢。我们先把它给复制下,放到txt文档里,留着以后用。继续单步



又发现了这个地方。同样复制下来。(也要怀疑下,都这么比较会不会不是验证码呢。我们接着下面分析即可)



(中间其实出现了关键call,给单步过去了,关键call再算验证码,不过第一次分析,不会知道的,而且那里那么多call,所以就一路单步即可了,如果有看到这里的朋友,可以留意下call,进去之后会发现验证码在里面一步步的生成,每循环一次出一个数字,循环了10次,刚好和我们的验证码数位一样。)

继续单步会发现,又出现可疑了。同时出现了验证码和新出来的什么东西,我们也保存下。



继续发现寄存器,又出现了可疑的,继续保存下来。(其实这个代码也是在一个call里面算出来的。只是一开始给单步过去了,)



再单步都出call了
然后我们重新运行输入我们刚刚收集的可以信息。
注册码,当然还是要送aaaaaaa等15个了。

发现我们刚刚记录的10位数字居然都有效的验证码。(软件作者好坑爹啊,搞这么多正确的验证码干嘛)

至此,教程接受,附上激活后的截图。


本文仅仅用于研究分析,不提供任何下载。
总结:(其实大神们只看下面都会秒懂的)
1. 其实整个流畅走下来,会发现并不那么麻烦。
2. 搜索(注册失败)字符串;
3. 然后在断尾(retn处)下F2断点,输入我们的假码注册;
4. 然后F8出call;
5. 往上找到段首F2断点;
6. 重新输入假码注册,然后断在低5步。单步F8,寄存器会以此出现假验证码、机器码、和假注册码。等出现完整的假注册码的时候,进call。
7. 然后一路F8,记录寄存器的10位数字。均为正确的验证码。(除10位的机器码外)

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

其他图文教程(不定期可能更新)


一、       【新手教程】开博系列软件脱壳、IAT修复、破解
二、       【新手教程】考真系列之Windows7模块软件-追码教程
三、       【新手教程】完美破解之黑谍宝贝下载专家
四、       【新手教程补充】开博送货单软件标准版1字节爆破图文加视频教程



犭王人曰女支 发表于 2015-9-6 12:47

路过看下,适合新手。

n123896 发表于 2015-9-6 12:49

很不错详细~

Vision丶 发表于 2015-9-6 12:56

火前留名.......

吃兔子de胡萝卜 发表于 2015-9-6 13:14

做为新手 要顶给后来人注意

贴纸笔墨 发表于 2015-9-6 13:36

还不错 在努力的看

niuniu919 发表于 2015-9-6 15:12

很好的新手教程,谢谢楼主

xlcomputer 发表于 2015-9-6 18:05

适合新手学习,跟着研究一下。

wskj 发表于 2015-9-7 19:42

码字,学习。。。。

wskj 发表于 2015-9-8 17:08

谢谢分享。。。。
页: [1] 2
查看完整版本: 【新手教程】考真系列之Windows7模块软件-追码教程