目标程序是我自己用WinLicense 2.1.0.0加的一个VB程序,保护选项默认。刚开始很灵异,最后换了个OD脱壳才OK……
工具:原版英文OD+StrongOD
用到的脚本是:Themida + WinLicense 1.1.0.0 - 2.1.0.0 Dumper + IAT Repair + CodeEncrypt Repair v2.6.0
OD载入程序,跑脚本,等待……^_
最后停在如下代码处:
0040D700 60 PUSHAD ---停在这里
0040D701 9C PUSHFD
0040D702 50 PUSH EAX
0040D703 54 PUSH ESP
0040D704 6A 04 PUSH 4
0040D706 68 00100000 PUSH 1000
0040D70B 68 00004000 PUSH 123.00400000
0040D710 FF15 F80F4000 CALL DWORD PTR DS:[400FF8] ; kernel32.VirtualProtect
0040D716 58 POP EAX
0040D717 C7C6 00D24000 MOV ESI,123.0040D200
0040D71D C7C7 00004000 MOV EDI,123.00400000
0040D723 C7C1 00050000 MOV ECX,500
0040D729 F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[>
0040D72B C705 9C174000 FF>MOV DWORD PTR DS:[40179C],115C25FF
0040D735 C705 A0174000 40>MOV DWORD PTR DS:[4017A0],40
0040D73F 9D POPFD
0040D740 61 POPAD
0040D741 -E9 5640FFFF JMP 123.0040179C ; JMP to msvbvm60.ThunRTMain
F8单步走,一直到0040D741处,jmp回去。这是在修复最后一个API。
0040179C -FF25 5C114000 JMP DWORD PTR DS:[40115C] ; msvbvm60.ThunRTMain
到这里后,根据堆栈中内容和VB入口特征补上OEP处代码:
004017A2 68 C0254000 PUSH 123.004025C0 ; ASCII "VB5!6&vb6chs.dll"
004017A7 E8 EEFFFFFF CALL 123.0040179A
堆栈显示如下:
0012FF40 004E1DA7 123.004E1DA7
0012FF44 004025C0 ASCII "VB5!6&vb6chs.dll"
0012FF48 73476A6E msvbvm60.73476A6E
0012FF4C 004F1D9F 123.004F1D9F
0012FF50 02F20005
0012FF54 004F3D93 123.004F3D93
0012FF58 00000000
0012FF5C 73474C6D msvbvm60.__vbaI4ErrVar
最后在004017A2新建EIP。
LordPE dump+ ImportREC 修复。脱壳完毕,运行正常,OK!
已经有(0)位网友发表了评论,你也评一评吧!
原创文章如转载,请注明:转载自Eddy Blog
原文地址:http://www.rrgod.com/technique/451.html 欢迎订阅Eddy Blog。
Tags:WinLicense 脱壳