破解实战-第九战
本帖最后由 我是用户 于 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
{:301_1007:} 人各有所长,我不擅长这个,不是打击你 jiu299 发表于 2013-6-18 17:23 static/image/common/back.gif
虽然不知道你在说些什么。。。不过,支持你
你这个...好吧,被打击了.....{:17_1055:}
虽然不知道你在说些什么。。。不过,支持你 jiu299 发表于 2013-6-18 17:29 static/image/common/back.gif
人各有所长,我不擅长这个,不是打击你
那你擅长的是?
学习了,不错的方法 吃饭,睡觉,吃饭,睡觉 从第一集开始就开始收藏,但是研究了第一集,就搞不下去了,搞了2天,最后放弃了,照着老大的步骤走,搞得昏天地暗,无奈,水平太菜,现在只能瞻仰,学完恒大的10集后,感觉充满能量,但是理想很丰满,现实很骨感,还要继续努力呀,虽然不懂,但是还是顶老大,先收藏,等水平高了,再研究。。。。 jiu299 发表于 2013-6-18 17:35 static/image/common/back.gif
吃饭,睡觉,吃饭,睡觉
{:301_978:}这个我也擅长 yuxiaopc 发表于 2013-6-18 17:37 static/image/common/back.gif
从第一集开始就开始收藏,但是研究了第一集,就搞不下去了,搞了2天,最后放弃了,照着老大的步骤走,搞得昏 ...
这一系列出完,估计会出一系列比较简单的教程,先看看情况再说。