吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 36699|回复: 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] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
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] 纯文本查看 复制代码
1
042B03F      74 3E         je short PDF2Word.0042B07F       改为jmp


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

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

图5.jpg
相关代码如下:
[AppleScript] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
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] 纯文本查看 复制代码
1
2
3
4
5
6
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] 纯文本查看 复制代码
1
2
3
4
5
6
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] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
参考位于 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] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
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] 纯文本查看 复制代码
1
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, 2025-2-22 02:25

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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