我是用户 发表于 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:


脱去,用PEID查壳,显示为Microsoft Visual Basic 5.0 / 6.0。
如图2:

一看到VB就头疼,没办法,我们继续...

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


返回到0042B068,相关代码如下:
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:
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:,eax         ;
0042B05D   .FFD6          call esi                                 ;MSVBVM60.__vbaSetSystemError; <&MSVBVM60.__vbaSetSystemError>
0042B05F   .8B8D 48F7FFFF mov ecx,dword ptr ss:
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:
0042B075   .52            push edx                                 ;

修改如下:
042B03F      74 3E         je short PDF2Word.0042B07F       改为jmp

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


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


相关代码如下:
0042C1CD   .3B35 50C04300 cmp esi,dword ptr ds:
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:
0042C1DE   .85C0          test eax,eax
0042C1E0   .0F8D 36010000 jge PDF2Word.0042C31C
0042C1E6   >A1 74CA4300   mov eax,dword ptr ds:
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:
0042C26F   .FF15 20134000 call dword ptr ds:[<&MSVBVM60.__vbaFreeS>;MSVBVM60.__vbaFreeStr
0042C275   .8D4D A0       lea ecx,dword ptr ss:
0042C278   .FF15 1C134000 call dword ptr ds:[<&MSVBVM60.__vbaFreeO>;MSVBVM60.__vbaFreeObj
0042C27E   .8D4D 88       lea ecx,dword ptr ss:
0042C281   .FF15 24104000 call dword ptr ds:[<&MSVBVM60.__vbaFreeV>;MSVBVM60.__vbaFreeVar
0042C287   .B8 04000280   mov eax,0x80020004
0042C28C   .8985 60FFFFFF mov dword ptr ss:,eax
0042C292   .B9 0A000000   mov ecx,0xA
0042C297   .898D 58FFFFFF mov dword ptr ss:,ecx
0042C29D   .8985 70FFFFFF mov dword ptr ss:,eax
0042C2A3   .898D 68FFFFFF mov dword ptr ss:,ecx
0042C2A9   .8945 80       mov dword ptr ss:,eax
0042C2AC   .898D 78FFFFFF mov dword ptr ss:,ecx
0042C2B2   .C785 30FFFFFF>mov dword ptr ss:,PDF2Word.004>;文件错误,请与软件开发者联系。
0042C2BC   .89B5 28FFFFFF mov dword ptr ss:,esi
0042C2C2   .8D95 28FFFFFF lea edx,dword ptr ss:
0042C2C8   .8D4D 88       lea ecx,dword ptr ss:
0042C2CB   .FF15 8C124000 call dword ptr ds:[<&MSVBVM60.__vbaVarDu>;MSVBVM60.__vbaVarDup

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


相关代码如下:
00435133   > \C745 FC 0F000>mov dword ptr ss:,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:,0x11
00435151   .C705 50C04300>mov dword ptr ds:,0x20200       //原文件大小
0043515B   .C745 FC 12000>mov dword ptr ss:,0x12
00435162   .E8 39380000   call PDF2Word.004389A0
00435167   .C745 FC 13000>mov dword ptr ss:,0x13
0043516E   .8D4D B8       lea ecx,dword ptr ss:
00435171   .51            push ecx
00435172   .E8 09140000   call PDF2Word.00436580
00435177   .8D4D B8       lea ecx,dword ptr ss:
0043517A   .FF15 24104000 call dword ptr ds:[<&MSVBVM60.__vbaFreeV>;MSVBVM60.__vbaFreeVar

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

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


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

将00425993改为jmp,程序成功注册,同时word ptr注册标志位被赋值0xFFFF.
在你开始转换,查看是否注册信息,以及程序窗口提示等等都会调用以下的注册验证代码。
相关代码如下:
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:,di
0042BFED   .0F85 A5000000 jnz PDF2Word.0042C098
通过以上代码我们可知程序注册判断方法是:
先判断是否注册码是否为0x20位,再判断标志位是否为0XFFFF.
看到vbaLenBstr了没,我们Ctrl+N,查找其参考。

参考位于 PDF2Word:Unpacker 到 MSVBVM60.__vbaLenBstr
地址       反汇编                                    注释
00402C0C   jmp dword ptr ds:[<&MSVBVM60.__vbaLenBstMSVBVM60.__vbaLenBstr//无用
0041E8C6   call dword ptr ds:[<&MSVBVM60.__vbaLenBsMSVBVM60.__vbaLenBstr
0042665E   call dword ptr ds:[<&MSVBVM60.__vbaLenBsMSVBVM60.__vbaLenBstr
00427B0B   call dword ptr ds:[<&MSVBVM60.__vbaLenBsMSVBVM60.__vbaLenBstr//无用
00427D7C   call dword ptr ds:[<&MSVBVM60.__vbaLenBsMSVBVM60.__vbaLenBstr//无用

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

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

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

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


注释无用的,我们就不用管他了,我们将其cmp eax,20的跳转改掉即可。
程序开始的word ptr ds:赋值,相关代码如下:
00435F1B   .C745 FC 0B000>mov dword ptr ss:,0xB
00435F22   .66:837D C8 FF cmp word ptr ss:,0xFFFF
00435F27   .75 53         jnz short PDF2Word.00435F7C
00435F29   .C745 FC 0C000>mov dword ptr ss:,0xC
00435F30   .8B45 D8       mov eax,dword ptr ss:
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:,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:,0xE
00435F5D   .66:C745 CC FF>mov word ptr ss:,0xFFFF
00435F63   .C745 FC 0F000>mov dword ptr ss:,0xF
00435F6A   .66:C705 30C04>mov word ptr ds:,0xFFFF
00435F73   .EB 02         jmp short PDF2Word.00435F77
修改如下:
00435F27   .75 53         jnz short PDF2Word.00435F7C   改为nop,让其正常判断。

然后保存,爆破成功.

如图7:



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

传送门:
         破解实战-第一战: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





















jiu299 发表于 2013-6-18 17:29

{:301_1007:} 人各有所长,我不擅长这个,不是打击你

我是用户 发表于 2013-6-18 17:26

jiu299 发表于 2013-6-18 17:23 static/image/common/back.gif
虽然不知道你在说些什么。。。不过,支持你

你这个...好吧,被打击了.....{:17_1055:}

jiu299 发表于 2013-6-18 17:23

虽然不知道你在说些什么。。。不过,支持你

我是用户 发表于 2013-6-18 17:32

jiu299 发表于 2013-6-18 17:29 static/image/common/back.gif
人各有所长,我不擅长这个,不是打击你

那你擅长的是?

高山流沙 发表于 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 static/image/common/back.gif
吃饭,睡觉,吃饭,睡觉

{:301_978:}这个我也擅长

我是用户 发表于 2013-6-18 17:40

yuxiaopc 发表于 2013-6-18 17:37 static/image/common/back.gif
从第一集开始就开始收藏,但是研究了第一集,就搞不下去了,搞了2天,最后放弃了,照着老大的步骤走,搞得昏 ...

这一系列出完,估计会出一系列比较简单的教程,先看看情况再说。
页: [1] 2 3 4 5 6
查看完整版本: 破解实战-第九战