wangzhe311 发表于 2012-11-25 00:24

关于Word Password Recovery Master3.6.0.1(最新版)破解分析

首先我们用工具查壳,显示如下图:
壳类型为:ASProtect v1.23 RC1,那么我们直接用工具脱壳好了。打开工具如图:
打开“选项”进行如下设置:
上图的设置是必须的,不然会报错。见如下图,说明我们成功脱完了,会自动生成一个:WPasRec_u.exe
再用工具查一下壳:
脱的很干净。顺便看一下算法,结果很是吓人……
接下来,我们用OD来看看吧。先查下字符串,结果字符串并不多,然后我们用C32Asm对脱壳后的程序进行反汇编看看,结果很丰富啊,有很多字符串供我们参考。
接着我们可以根据这些字符串的地址对应到OD中的地址,进行动态调试……打开软件看看有什么值得我们利用的东西。★第一个需要破解的地方:
在file菜单下的setting access password,用来设置软件运行的密码。对于第一个地方我们最好用调用堆栈法。顺利找到了这里:00429461   .83C4 04       add esp,400429464   .85C0          test eax,eax00429466   .75 53         jnz short WPasRec_.004294BB         ;关键跳转。改为jmp00429468   .8D4C24 04   lea ecx,dword ptr ss:0042946C   .68 1D800000   push 801D00429471   .51            push ecx将00429466处的jnz改为jmp后成功爆破,如下图。
也可以更改eax的值,如将00429461处的add esp,4改为mov eax,4也可以达到跳过注册框的目的。
破解后直接进行设置密码的地方。
★第二个需要破解的地方:在help菜单下的about。
接下来,我们看关键字符串,在里面发现有一个Registered to:这个便是about里面的那个了,
地址是0041C4F6,在OD中我们找到0041C4F6,在段首下断点。0041C4CC   .83C4 04       add esp,40041C4CF   .3BC3          cmp eax,ebx0041C4D1   .74 63         je short WPasRec_.0041C536                        ;关键跳转0041C4D3   .51            push ecx0041C4D4   .8BCC          mov ecx,esp0041C4D6   .896424 14   mov dword ptr ss:,esp0041C4DA   .68 90554900   push WPasRec_.00495590                   ;ASCII "UserName"0041C4DF   .E8 06580400   call WPasRec_.00461CEA0041C4E4   .8D4C24 14   lea ecx,dword ptr ss:0041C4E8   .51            push ecx0041C4E9   .E8 D21B0000   call WPasRec_.0041E0C00041C4EE   .83C4 08       add esp,80041C4F1   .50            push eax0041C4F2   .8D5424 10   lea edx,dword ptr ss:0041C4F6   .68 7C554900   push WPasRec_.0049557C                ;ASCII "Registered to:"0041C4FB   .52            push edx0041C4FC   .895C24 2C   mov dword ptr ss:,ebx0041C500   .E8 805A0400   call WPasRec_.00461F85                      取得注册者的名字里面的代码为:00461FB7|> \8B4D 10       mov ecx,                      将注册者的名字放入ecx00461FBA|.8B09          mov ecx,dword ptr ds:               00461FBC|.51            push ecx00461FBD|.FF71 F8       push dword ptr ds:★我们接着看一下,怎么成功注册打开注册窗口:
进行假注册:
弹出错误对话框:
通过查找字符串,我们发现有如下提示:
那么我们也可以用关键字符来确定位置,直接到00422434处。在段首00422280处下断,单步分析。004222DE   .8B42 F8       mov eax,dword ptr ds:004222E1   .85C0          test eax,eax004222E3   .75 39         jnz short WPasRec_.0042231E‚
00422321   .8B41 F8       mov eax,dword ptr ds:00422324   .85C0          test eax,eax00422326   .75 39         jnz short WPasRec_.0042236100422328   .8D55 E0       lea edx,dword ptr ss:说明:以上两个地方分别验证用户名和注册码是否为空,为空则出错。简单验证之后顺利来到了关键跳:0042238C   .85C0          test eax,eax0042238E   .0F84 DA010000 je WPasRec_.0042256E          关键跳00422394   .8D4D E0       lea ecx,dword ptr ss:但是跑起来之后出现了错误提示:
怀疑是有验证。于是找到错误地址在:00401072|.85C0          test eax,eax00401074|.75 24         jnz short WPasRec_.0040109A    :改为jmp直接跳过错误提示00401076|.8B4424 10   mov eax,dword ptr ss:程序顺利读取用户名,注册码等信息,并弹出注册成功提示。
点确定之后再次出现错误提示:
发现地址在:004224D0   .FF15 20424900 call dword ptr ds:跟进去,OD出现一片空白,在前面有一个跳转。004224CE   . /75 77         jnz short WPasRec_.00422547   改为jmp自动跳过验证。004224D0   |FF15 20424900 call dword ptr ds:         错误提示004224D6   . |E9 17000000   jmp WPasRec_.004224F2搞定后程序跑起来了。因为在试用软件时我们知道,程序可以顺利破解密码,只不过不能显示全文,取原文前200(十六进制中为C8)个字符,
然后用“To view full document, please register”替换了其它原文内容,那我们就有了一个思路,在任何情况下都不让它替换。通过查找关键字符串,我们看到了在0042110B处发现有(DEMO)字符,一路跟进查看。一路跟下来,试了无数次,终于在这里看到了希望:0042139A|.8BCC          mov ecx,esp0042139C|.8965 C8       mov ,esp0042139F|.68 6C594900   push WPasRec_.0049596C      ;ASCII "Z!gjVy>#XelYjT"004213A4|.E8 41090400   call WPasRec_.00461CEA004213A9|.51            push ecx004213AA|.8D45 EC       lea eax,“Z!gjVy>#XelYjT”便为文档的密码。再接下来,找到了解密文档的call。004213C6|.E8 B553FEFF   call WPasRec_.00406780;
对这个call进行跟进,来到:
用cmp函数对eax和esi进行了比较,即对文档的真实字符数与200进行比较大小。那么我们直接跳过即可。把jle直接改为jmp,即可成功解密全文。接下来梳理一下破解过程:1、工具脱壳2、破除启动密码设置地址:00429464.85C0    test eax,eax00429466.75 53jnz short WPasRec_.004294BB   ;关键跳转。改为jmp原始指令:75 53   JNZ修改指令:EB 53   JMP3、破除注册者限制地址:0041C4CF .3BC3          cmp eax,ebx0041C4D1 .74 63         je short WPasRec_.0041C536            ;关键跳转,为改jnz原始指令:74 63         je修改指令:75 63         jnz4、破除替换字符限制地址:004068B9 .3BC6          cmp eax,esi004068BB .0F8E 36020000 jle WPasRec_.00406AF7004068C1 .|8D55 C4      lea edx,dword ptr ss:原始指令:0F8E 36020000 jle修改指令:E9 37020000   jmp WPasRec_.00406AF790            nop
根据这个就自己写出patch工具了,这里不再上传了,因为在别人的电脑上不一定可以用。
原程序官网为:http://www.rixler.com/需要自己下载。
相信如下图的程序破解都大同小异了。。还可以做汉化处理哦。。呵呵。





1354669803 发表于 2012-11-25 00:29

算了我一点也不能理解啊

yuwentao4761 发表于 2012-11-25 00:39

{:301_998:}楼主神人,呵呵.....我是来学习的....

284406022 发表于 2012-11-25 00:50

看不懂楼主写的东西

网络小牛 发表于 2012-11-25 01:31

感谢楼主原创破文。。码了再看

fzx118 发表于 2012-11-30 09:08

学习学习懂一些   

怡红院ぺ秀才 发表于 2012-11-30 09:18

作者的文章我有待学习啊!

Hmily 发表于 2012-12-16 15:36

写的不错,常用的爆破方式,如果代码用代码框处理下就更好了,加精鼓励。

YoungBai 发表于 2012-12-16 22:47

分析的很好.谢谢楼主分享方法.

168888 发表于 2012-12-16 23:14

非常详细的教程。谢谢楼主!
页: [1] 2 3 4
查看完整版本: 关于Word Password Recovery Master3.6.0.1(最新版)破解分析