吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 36329|回复: 52
收起左侧

[原创] 破解实战-第九战

  [复制链接]
我是用户 发表于 2013-6-18 17:17
本帖最后由 我是用户 于 2013-6-23 13:47 编辑

【软件名称】: XXPDF转WORD助手
【作者邮箱】: 2714608453@qq.com
【下载地址】: 自己搜索下载
【加壳方式】: tElock 0.98b1 -> tE!
【使用工具】: OD
【操作平台】: XP SP2
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!

1查壳
用PEID对PDF2Word.exe进行查壳,显示为tElock 0.98b1 -> tE!.
如图1:

图1.jpg
脱去,用PEID查壳,显示为Microsoft Visual Basic 5.0 / 6.0。
如图2:
图2.jpg
一看到VB就头疼,没办法,我们继续...

2.自效验
打开脱好的程序,程序一闪而过,说明有自效验,by TerminateProcess.
重新运行程序,断下。
如图3:

图3.jpg
返回到0042B068,相关代码如下:
[AppleScript] 纯文本查看 复制代码
0042B039   .  83C4 10       add esp,0x10
0042B03C   .  66:85F6       test si,si
0042B03F      74 3E         je short PDF2Word.0042B07F
0042B041   .  8B85 ACF7FFFF mov eax,dword ptr ss:[ebp-0x854]
0042B047   .  50            push eax                                 ; 
0042B048   .  6A 00         push 0x0
0042B04A   .  6A 01         push 0x1
0042B04C   .  E8 37CBFDFF   call PDF2Word.00407B88
0042B051   .  8B35 88104000 mov esi,dword ptr ds:[<&MSVBVM60.__vbaSe>;  MSVBVM60.__vbaSetSystemError
0042B057   .  8985 48F7FFFF mov dword ptr ss:[ebp-0x8B8],eax         ;  
0042B05D   .  FFD6          call esi                                 ;  MSVBVM60.__vbaSetSystemError; <&MSVBVM60.__vbaSetSystemError>
0042B05F   .  8B8D 48F7FFFF mov ecx,dword ptr ss:[ebp-0x8B8]
0042B065   .  6A 00         push 0x0
0042B067   .  51            push ecx                                 ;  
0042B068   .  E8 13EAFDFF   call PDF2Word.00409A80                      //TerminateProcess
0042B06D   .  FFD6          call esi                                 ;  
0042B06F   .  8B95 48F7FFFF mov edx,dword ptr ss:[ebp-0x8B8]
0042B075   .  52            push edx                                 ; 


修改如下:
[AppleScript] 纯文本查看 复制代码
042B03F      74 3E         je short PDF2Word.0042B07F       改为jmp


保存后程序成功运行,点击添加文件,出现文件错误,然后程序就退出了。
如图4:

图4.jpg
右键搜索字符串,相同的字符串还有好几处,通通下断。
如图5:

图5.jpg
相关代码如下:
[AppleScript] 纯文本查看 复制代码
0042C1CD   .  3B35 50C04300 cmp esi,dword ptr ds:[0x43C050]
0042C1D3   .  75 11         jnz short PDF2Word.0042C1E6
0042C1D5   .  85F6          test esi,esi
0042C1D7   .  74 0D         je short PDF2Word.0042C1E6
0042C1D9   .  A1 2CC04300   mov eax,dword ptr ds:[0x43C02C]
0042C1DE   .  85C0          test eax,eax
0042C1E0   .  0F8D 36010000 jge PDF2Word.0042C31C
0042C1E6   >  A1 74CA4300   mov eax,dword ptr ds:[0x43CA74]
0042C1EB   .  85C0          test eax,eax
0042C1ED   .  75 10         jnz short PDF2Word.0042C1FF
0042C1EF   .  68 74CA4300   push PDF2Word.0043CA74
0042C1F4   .  68 646E4000   push PDF2Word.00406E64
...省略无关代码
0042C26C   .  8D4D B4       lea ecx,dword ptr ss:[ebp-0x4C]
0042C26F   .  FF15 20134000 call dword ptr ds:[<&MSVBVM60.__vbaFreeS>;  MSVBVM60.__vbaFreeStr
0042C275   .  8D4D A0       lea ecx,dword ptr ss:[ebp-0x60]
0042C278   .  FF15 1C134000 call dword ptr ds:[<&MSVBVM60.__vbaFreeO>;  MSVBVM60.__vbaFreeObj
0042C27E   .  8D4D 88       lea ecx,dword ptr ss:[ebp-0x78]
0042C281   .  FF15 24104000 call dword ptr ds:[<&MSVBVM60.__vbaFreeV>;  MSVBVM60.__vbaFreeVar
0042C287   .  B8 04000280   mov eax,0x80020004
0042C28C   .  8985 60FFFFFF mov dword ptr ss:[ebp-0xA0],eax
0042C292   .  B9 0A000000   mov ecx,0xA
0042C297   .  898D 58FFFFFF mov dword ptr ss:[ebp-0xA8],ecx
0042C29D   .  8985 70FFFFFF mov dword ptr ss:[ebp-0x90],eax
0042C2A3   .  898D 68FFFFFF mov dword ptr ss:[ebp-0x98],ecx
0042C2A9   .  8945 80       mov dword ptr ss:[ebp-0x80],eax
0042C2AC   .  898D 78FFFFFF mov dword ptr ss:[ebp-0x88],ecx
0042C2B2   .  C785 30FFFFFF>mov dword ptr ss:[ebp-0xD0],PDF2Word.004>;  文件错误,请与软件开发者联系。
0042C2BC   .  89B5 28FFFFFF mov dword ptr ss:[ebp-0xD8],esi
0042C2C2   .  8D95 28FFFFFF lea edx,dword ptr ss:[ebp-0xD8]
0042C2C8   .  8D4D 88       lea ecx,dword ptr ss:[ebp-0x78]
0042C2CB   .  FF15 8C124000 call dword ptr ds:[<&MSVBVM60.__vbaVarDu>;  MSVBVM60.__vbaVarDup


0042C1CD代码处:cmp esi,dword ptr ds:[0x43C050]
ds:[0043C050]=00020200
esi=0003DC00
现文件大小与原文件大小比较,不等则弹出错误,我们对其下内存写入断点,来找原文件大小的值


相关代码如下:
[AppleScript] 纯文本查看 复制代码
00435133   > \C745 FC 0F000>mov dword ptr ss:[ebp-0x4],0xF
0043513A   .  BA 34B04000   mov edx,PDF2Word.0040B034                ;  system...
0043513F   .  B9 58C04300   mov ecx,PDF2Word.0043C058
00435144   .  FF15 38124000 call dword ptr ds:[<&MSVBVM60.__vbaStrCo>;  MSVBVM60.__vbaStrCopy
0043514A   >  C745 FC 11000>mov dword ptr ss:[ebp-0x4],0x11
00435151   .  C705 50C04300>mov dword ptr ds:[0x43C050],0x20200       //原文件大小
0043515B   .  C745 FC 12000>mov dword ptr ss:[ebp-0x4],0x12
00435162   .  E8 39380000   call PDF2Word.004389A0
00435167   .  C745 FC 13000>mov dword ptr ss:[ebp-0x4],0x13
0043516E   .  8D4D B8       lea ecx,dword ptr ss:[ebp-0x48]
00435171   .  51            push ecx
00435172   .  E8 09140000   call PDF2Word.00436580
00435177   .  8D4D B8       lea ecx,dword ptr ss:[ebp-0x48]
0043517A   .  FF15 24104000 call dword ptr ds:[<&MSVBVM60.__vbaFreeV>;  MSVBVM60.__vbaFreeVar


看到没,00435151代码处,原文件的真实大小是0x20200,而我们的脱壳后的文件大小是0x3DC00,
将其替换,自效验解除。

3.爆破
点击开始转换,弹出提示。
如图6:

图6.jpg
有字符串,依旧是搜索字符串,我就不再贴图了,注册CALL为004252B0
相关代码如下:
[AppleScript] 纯文本查看 复制代码
0042598A   .  0FBF95 18FFFF>movsx edx,word ptr ss:[ebp-0xE8]
00425991   .  85D2          test edx,edx
00425993   .  0F84 D0070000 je PDF2Word.00426169              //关键跳
00425999   .  C745 FC 0E000>mov dword ptr ss:[ebp-0x4],0xE
004259A0   .  8B45 08       mov eax,dword ptr ss:[ebp+0x8]
004259A3   .  8B08          mov ecx,dword ptr ds:[eax]


将00425993改为jmp,程序成功注册,同时word ptr[43c030]注册标志位被赋值0xFFFF.
在你开始转换,查看是否注册信息,以及程序窗口提示等等都会调用以下的注册验证代码。
相关代码如下:
[AppleScript] 纯文本查看 复制代码
0042BFDA   .  52            push edx                                 ; /String = NULL
0042BFDB   .  FF15 30104000 call dword ptr ds:[<&MSVBVM60.__vbaLenBs>; \__vbaLenBstr
0042BFE1   .  83F8 20       cmp eax,0x20
0042BFE4   .  75 0D         jnz short PDF2Word.0042BFF3
0042BFE6   .  66:393D 30C04>cmp word ptr ds:[0x43C030],di
0042BFED   .  0F85 A5000000 jnz PDF2Word.0042C098

通过以上代码我们可知程序注册判断方法是:
先判断是否注册码是否为0x20位,再判断标志位是否为0XFFFF.
看到vbaLenBstr了没,我们Ctrl+N,查找其参考。

[AppleScript] 纯文本查看 复制代码
参考位于 PDF2Word:Unpacker 到 MSVBVM60.__vbaLenBstr
地址       反汇编                                    注释
00402C0C   jmp dword ptr ds:[<&MSVBVM60.__vbaLenBst  MSVBVM60.__vbaLenBstr  //无用
0041E8C6   call dword ptr ds:[<&MSVBVM60.__vbaLenBs  MSVBVM60.__vbaLenBstr  
0042665E   call dword ptr ds:[<&MSVBVM60.__vbaLenBs  MSVBVM60.__vbaLenBstr
00427B0B   call dword ptr ds:[<&MSVBVM60.__vbaLenBs  MSVBVM60.__vbaLenBstr  //无用
00427D7C   call dword ptr ds:[<&MSVBVM60.__vbaLenBs  MSVBVM60.__vbaLenBstr  //无用

004283F5   call dword ptr ds:[<&MSVBVM60.__vbaLenBs  MSVBVM60.__vbaLenBstr  //无用
00428532   call dword ptr ds:[<&MSVBVM60.__vbaLenBs  MSVBVM60.__vbaLenBstr  //无用
004288A4   call dword ptr ds:[<&MSVBVM60.__vbaLenBs  MSVBVM60.__vbaLenBstr  //无用
00428D1E   call dword ptr ds:[<&MSVBVM60.__vbaLenBs  MSVBVM60.__vbaLenBstr  //无用
004297BD   call dword ptr ds:[<&MSVBVM60.__vbaLenBs  MSVBVM60.__vbaLenBstr  //无用

0042B908   call dword ptr ds:[<&MSVBVM60.__vbaLenBs  MSVBVM60.__vbaLenBstr  //无用
0042BF17   call dword ptr ds:[<&MSVBVM60.__vbaLenBs  MSVBVM60.__vbaLenBstr
0042BFDB   call dword ptr ds:[<&MSVBVM60.__vbaLenBs  MSVBVM60.__vbaLenBstr
0042CA57   call dword ptr ds:[<&MSVBVM60.__vbaLenBs  MSVBVM60.__vbaLenBstr
0042EFD8   call dword ptr ds:[<&MSVBVM60.__vbaLenBs  MSVBVM60.__vbaLenBstr

0042F0BA   call dword ptr ds:[<&MSVBVM60.__vbaLenBs  MSVBVM60.__vbaLenBstr
0042FCA8   call dword ptr ds:[<&MSVBVM60.__vbaLenBs  MSVBVM60.__vbaLenBstr
0042FFBD   call dword ptr ds:[<&MSVBVM60.__vbaLenBs  MSVBVM60.__vbaLenBstr
00430444   call dword ptr ds:[<&MSVBVM60.__vbaLenBs  MSVBVM60.__vbaLenBstr
00432F50   mov ebx,dword ptr ds:[<&MSVBVM60.__vbaLe  MSVBVM60.__vbaLenBstr

00433CCA   call dword ptr ds:[<&MSVBVM60.__vbaLenBs  MSVBVM60.__vbaLenBstr
00435F34   call dword ptr ds:[<&MSVBVM60.__vbaLenBs  MSVBVM60.__vbaLenBstr
004363F7   call dword ptr ds:[<&MSVBVM60.__vbaLenBs  MSVBVM60.__vbaLenBstr
00437F7E   call dword ptr ds:[<&MSVBVM60.__vbaLenBs  MSVBVM60.__vbaLenBstr  //无用
00438FE2   call dword ptr ds:[<&MSVBVM60.__vbaLenBs  MSVBVM60.__vbaLenBstr



注释无用的,我们就不用管他了,我们将其cmp eax,20的跳转改掉即可。
程序开始的word ptr ds:[0x43C030]赋值,相关代码如下:
[AppleScript] 纯文本查看 复制代码
00435F1B   .  C745 FC 0B000>mov dword ptr ss:[ebp-0x4],0xB
00435F22   .  66:837D C8 FF cmp word ptr ss:[ebp-0x38],0xFFFF
00435F27   .  75 53         jnz short PDF2Word.00435F7C
00435F29   .  C745 FC 0C000>mov dword ptr ss:[ebp-0x4],0xC
00435F30   .  8B45 D8       mov eax,dword ptr ss:[ebp-0x28]
00435F33   .  50            push eax                                 ; /String = 0000000B ???
00435F34   .  FF15 30104000 call dword ptr ds:[<&MSVBVM60.__vbaLenBs>; \__vbaLenBstr
00435F3A   .  83F8 20       cmp eax,0x20
00435F3D   .  75 36         jnz short PDF2Word.00435F75
00435F3F   .  C745 FC 0D000>mov dword ptr ss:[ebp-0x4],0xD
00435F46   .  BA B06C4000   mov edx,PDF2Word.00406CB0
00435F4B   .  B9 4CC04300   mov ecx,PDF2Word.0043C04C
00435F50   .  FF15 38124000 call dword ptr ds:[<&MSVBVM60.__vbaStrCo>;  MSVBVM60.__vbaStrCopy
00435F56   .  C745 FC 0E000>mov dword ptr ss:[ebp-0x4],0xE
00435F5D   .  66:C745 CC FF>mov word ptr ss:[ebp-0x34],0xFFFF
00435F63   .  C745 FC 0F000>mov dword ptr ss:[ebp-0x4],0xF
00435F6A   .  66:C705 30C04>mov word ptr ds:[0x43C030],0xFFFF
00435F73   .  EB 02         jmp short PDF2Word.00435F77

修改如下:
[AppleScript] 纯文本查看 复制代码
00435F27   .  75 53         jnz short PDF2Word.00435F7C   改为nop,让其正常判断。


然后保存,爆破成功.

如图7:
图7.jpg


=================================================================

传送门:
           破解实战-第一战:http://www.52pojie.cn/thread-197281-1-1.html
           破解实战-第二战:http://www.52pojie.cn/thread-197598-1-1.html
           破解实战-第三站:http://www.52pojie.cn/thread-197957-1-1.html
           破解实战-第四站:http://www.52pojie.cn/thread-198203-1-1.html
           破解实战-第五战:http://www.52pojie.cn/thread-198365-1-1.html
           破解实战-第六战:http://www.52pojie.cn/thread-198930-1-1.html
           破解实战-第七战:http://www.52pojie.cn/thread-199459-1-1.html
           破解实战-第八战:http://www.52pojie.cn/thread-199834-1-1.html
           破解实战-第九战:http://www.52pojie.cn/thread-200655-1-1.html           破解实战-第十战:http://www.52pojie.cn/thread-200798-1-1.html





















免费评分

参与人数 7热心值 +7 收起 理由
yeluosuif + 1 谢谢@Thanks!
只不过去是了 + 1 我很赞同!
blmk + 1 热心回复!
xiaoheicool + 1 中级的,不错
小雨细无声 + 1 好详细,爱币贡献大神!
qqlinhai + 1 LZ太有耐心了,发文不容易,支持。
jiu299 + 1 已答复!

查看全部评分

本帖被以下淘专辑推荐:

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

jiu299 发表于 2013-6-18 17:29
人各有所长,我不擅长这个,不是打击你
 楼主| 我是用户 发表于 2013-6-18 17:26
jiu299 发表于 2013-6-18 17:23
虽然不知道你在说些什么。。。不过,支持你

你这个...好吧,被打击了.....
jiu299 发表于 2013-6-18 17:23
虽然不知道你在说些什么。。。不过,支持你

免费评分

参与人数 1热心值 +1 收起 理由
小雨细无声 + 1 羡慕九姐爱币和勋章

查看全部评分

 楼主| 我是用户 发表于 2013-6-18 17:32
jiu299 发表于 2013-6-18 17:29
人各有所长,我不擅长这个,不是打击你

那你擅长的是?
高山流沙 发表于 2013-6-18 17:34
学习了,不错的方法
jiu299 发表于 2013-6-18 17:35
吃饭,睡觉,吃饭,睡觉
yuxiaopc 发表于 2013-6-18 17:37
从第一集开始就开始收藏,但是研究了第一集,就搞不下去了,搞了2天,最后放弃了,照着老大的步骤走,搞得昏天地暗,无奈,水平太菜,现在只能瞻仰,学完恒大的10集后,感觉充满能量,但是理想很丰满,现实很骨感,还要继续努力呀,虽然不懂,但是还是顶老大,先收藏,等水平高了,再研究。。。。
 楼主| 我是用户 发表于 2013-6-18 17:38
jiu299 发表于 2013-6-18 17:35
吃饭,睡觉,吃饭,睡觉

这个我也擅长

点评

我是无技术人员  发表于 2013-6-18 17:42
 楼主| 我是用户 发表于 2013-6-18 17:40
yuxiaopc 发表于 2013-6-18 17:37
从第一集开始就开始收藏,但是研究了第一集,就搞不下去了,搞了2天,最后放弃了,照着老大的步骤走,搞得昏 ...

这一系列出完,估计会出一系列比较简单的教程,先看看情况再说。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-12-21 22:11

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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