本帖最后由 我是用户 于 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,相关代码如下:
[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:
右键搜索字符串,相同的字符串还有好几处,通通下断。
如图5:
相关代码如下:
[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:
有字符串,依旧是搜索字符串,我就不再贴图了,注册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:
=================================================================
传送门:
破解实战-第一战: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
|