吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 23719|回复: 37
收起左侧

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

  [复制链接]
wangzhe311 发表于 2012-11-25 00:24
首先我们用工具查壳,显示如下图:
图片1.png
壳类型为:ASProtect v1.23 RC1,那么我们直接用工具脱壳好了。
打开工具如图:
图片2.png
打开“选项”进行如下设置:
图片3.png
上图的设置是必须的,不然会报错。
见如下图,说明我们成功脱完了,会自动生成一个:WPasRec_u.exe
图片4.png
再用工具查一下壳:
图片5.png
脱的很干净。顺便看一下算法,结果很是吓人……
图片6.png
接下来,我们用OD来看看吧。先查下字符串,结果字符串并不多,然后我们用C32Asm对脱壳后的程序进行反汇编看看,结果很丰富啊,有很多字符串供我们参考。
图片7.png
接着我们可以根据这些字符串的地址对应到OD中的地址,进行动态调试……
打开软件看看有什么值得我们利用的东西。
★第一个需要破解的地方:
图片8.png
在file菜单下的setting access password,用来设置软件运行的密码。
对于第一个地方我们最好用调用堆栈法。
顺利找到了这里:
00429461   .  83C4 04       add esp,4
00429464   .  85C0          test eax,eax
00429466   .  75 53         jnz short WPasRec_.004294BB           ;关键跳转。改为jmp
00429468   .  8D4C24 04     lea ecx,dword ptr ss:[esp+4]
0042946C   .  68 1D800000   push 801D
00429471   .  51            push ecx
将00429466处的jnz改为jmp后成功爆破,如下图。
也可以更改eax的值,如将00429461处的add esp,4改为mov eax,4也可以达到跳过注册框的目的。
破解后直接进行设置密码的地方。
图片9.png
★第二个需要破解的地方:
在help菜单下的about。
图片10.png
接下来,我们看关键字符串,在里面发现有一个Registered to:  这个便是about里面的那个了,
地址是0041C4F6,在OD中我们找到0041C4F6,在段首下断点。
0041C4CC   .  83C4 04       add esp,4
0041C4CF   .  3BC3          cmp eax,ebx
0041C4D1   .  74 63         je short WPasRec_.0041C536                        ;关键跳转
0041C4D3   .  51            push ecx
0041C4D4   .  8BCC          mov ecx,esp
0041C4D6   .  896424 14     mov dword ptr ss:[esp+14],esp
0041C4DA   .  68 90554900   push WPasRec_.00495590                   ;  ASCII "UserName"
0041C4DF   .  E8 06580400   call WPasRec_.00461CEA
0041C4E4   .  8D4C24 14     lea ecx,dword ptr ss:[esp+14]
0041C4E8   .  51            push ecx
0041C4E9   .  E8 D21B0000   call WPasRec_.0041E0C0
0041C4EE   .  83C4 08       add esp,8
0041C4F1   .  50            push eax
0041C4F2   .  8D5424 10     lea edx,dword ptr ss:[esp+10]
0041C4F6   .  68 7C554900   push WPasRec_.0049557C                ;  ASCII "Registered to:  "
0041C4FB   .  52            push edx
0041C4FC   .  895C24 2C     mov dword ptr ss:[esp+2C],ebx
0041C500   .  E8 805A0400   call WPasRec_.00461F85                        取得注册者的名字
里面的代码为:
00461FB7  |> \8B4D 10       mov ecx,[arg.3]                      将注册者的名字放入ecx
00461FBA  |.  8B09          mov ecx,dword ptr ds:[ecx]                 
00461FBC  |.  51            push ecx
00461FBD  |.  FF71 F8       push dword ptr ds:[ecx-8]
★我们接着看一下,怎么成功注册
打开注册窗口:
图片11.png
进行假注册:
图片12.png
弹出错误对话框:
图片13.png
通过查找字符串,我们发现有如下提示:

那么我们也可以用关键字符来确定位置,直接到00422434处。
在段首00422280处下断,单步分析。
004222DE   .  8B42 F8       mov eax,dword ptr ds:[edx-8]
004222E1   .  85C0          test eax,eax
004222E3   .  75 39         jnz short WPasRec_.0042231E  ‚
00422321   .  8B41 F8       mov eax,dword ptr ds:[ecx-8]
00422324   .  85C0          test eax,eax
00422326   .  75 39         jnz short WPasRec_.00422361
00422328   .  8D55 E0       lea edx,dword ptr ss:[ebp-20]
说明:以上两个地方分别验证用户名和注册码是否为空,为空则出错。
简单验证之后顺利来到了关键跳:
0042238C   .  85C0          test eax,eax
0042238E   .  0F84 DA010000 je WPasRec_.0042256E          关键跳
00422394   .  8D4D E0       lea ecx,dword ptr ss:[ebp-20]
但是跑起来之后出现了错误提示:
图片16.png
怀疑是有验证。
于是找到错误地址在:
00401072  |.  85C0          test eax,eax
00401074  |.  75 24         jnz short WPasRec_.0040109A    :改为jmp直接跳过错误提示
00401076  |.  8B4424 10     mov eax,dword ptr ss:[esp+10]
程序顺利读取用户名,注册码等信息,并弹出注册成功提示。
图片15.png
点确定之后再次出现错误提示:
图片14.png
发现地址在:
004224D0   .  FF15 20424900 call dword ptr ds:[494220]
跟进去,OD出现一片空白,在前面有一个跳转。
004224CE   . /75 77         jnz short WPasRec_.00422547     改为jmp自动跳过验证。
004224D0     |FF15 20424900 call dword ptr ds:[494220]         错误提示
004224D6   . |E9 17000000   jmp WPasRec_.004224F2
搞定后程序跑起来了。
因为在试用软件时我们知道,程序可以顺利破解密码,只不过不能显示全文,取原文前200(十六进制中为C8)个字符,
然后用“To view full document, please register”替换了其它原文内容,那我们就有了一个思路,在任何情况下都不让它替换。
通过查找关键字符串,我们看到了在0042110B处发现有(DEMO)字符,一路跟进查看。
一路跟下来,试了无数次,终于在这里看到了希望:
0042139A  |.  8BCC          mov ecx,esp
0042139C  |.  8965 C8       mov [local.14],esp
0042139F  |.  68 6C594900   push WPasRec_.0049596C      ;  ASCII "Z!gjVy>#XelYjT"
004213A4  |.  E8 41090400   call WPasRec_.00461CEA
004213A9  |.  51            push ecx
004213AA  |.  8D45 EC       lea eax,[local.5]
“Z!gjVy>#XelYjT”便为文档的密码。
再接下来,找到了解密文档的call。
004213C6  |.  E8 B553FEFF   call WPasRec_.00406780;
图片17.png
对这个call进行跟进,来到:
图片18.png
用cmp函数对eax和esi进行了比较,即对文档的真实字符数与200进行比较大小。
那么我们直接跳过即可。把jle直接改为jmp,即可成功解密全文。
接下来梳理一下破解过程:
1、工具脱壳
2、破除启动密码设置
地址:
00429464  .85C0    test eax,eax
00429466  .75 53  jnz short WPasRec_.004294BB     ;关键跳转。改为jmp
原始指令:75 53   JNZ
修改指令:EB 53   JMP
3、破除注册者限制
地址:
0041C4CF .3BC3          cmp eax,ebx
0041C4D1 .74 63         je short WPasRec_.0041C536            ;关键跳转,为改jnz
原始指令:74 63         je
修改指令:75 63         jnz
4、破除替换字符限制
地址:
004068B9 .3BC6          cmp eax,esi
004068BB .0F8E 36020000 jle WPasRec_.00406AF7
004068C1 .|8D55 C4      lea edx,dword ptr ss:[ebp-3C]
原始指令:0F8E 36020000 jle
修改指令:E9 37020000   jmp WPasRec_.00406AF7
90            nop
根据这个就自己写出patch工具了,这里不再上传了,因为在别人的电脑上不一定可以用。
原程序官网为:http://www.rixler.com/需要自己下载。
相信如下图的程序破解都大同小异了。。还可以做汉化处理哦。。呵呵。
19.bmp




点评

为什么我的DecomAS脱完壳运行不了?  发表于 2013-12-6 21:33

免费评分

参与人数 2热心值 +2 收起 理由
小佐yo + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
淡然出尘 + 1 有空看看、

查看全部评分

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

1354669803 发表于 2012-11-25 00:29
算了我一点也不能理解啊
yuwentao4761 发表于 2012-11-25 00:39
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
非常详细的教程。谢谢楼主!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-17 23:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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