工具: PeTools,Lordpe,Ollydbg,imprec
下载: http://bbs.pediy.com/upload/2005/10/files/winupack36.zip
脱壳三步曲(3+X):
1、载入
反Ollydbg,呵呵。
解决很简单,把ollydbg设置成即时调试器,然后把壳oep处代码设置成CC.
方法一: 十六进制编辑WinUpackC.exe,把0x18处的BE改成CC,保存.
方法二: PeTools的Break & Enter功能
运行修改后的WinUpackC.exe,然后运行,发生错误,点取消"按钮",Ollydbg载入,报错,不管它,停留在壳OEP,Ctrl+B,把cc改成be.
2、OEP+DUMP
bp GetProcAddress,Alt+F9,往下找retn,F4到retn处
00419687 FFD1 CALL ECX
00419689 93 XCHG EAX,EBX
0041968A AC LODS BYTE PTR DS:[ESI]
0041968B 84C0 TEST AL,AL
0041968D ^75 FB JNZ SHORT WinUpack.0041968A
0041968F 3806 CMP BYTE PTR DS:[ESI],AL
00419691 ^74 EA JE SHORT WinUpack.0041967D
00419693 8BC6 MOV EAX,ESI
00419695 79 05 JNS SHORT WinUpack.0041969C
00419697 46 INC ESI
00419698 33C0 XOR EAX,EAX
0041969A 66:AD LODS WORD PTR DS:[ESI]
0041969C 50 PUSH EAX
0041969D 53 PUSH EBX
0041969E FFD5 CALL EBP
004196A0 AB STOS DWORD PTR ES:[EDI]
004196A1 ^EB E7 JMP SHORT WinUpack.0041968A
004196A3 C3 RETN **********F4到这里*****
F8一下,就到OEP了.
Ollydump一下,dump到dump.exe中.
3、优化脱壳文件,去垃圾解码代码+Imprec
用ollydbg打开dump.exe,打开Directorys(目录结构),查看资源项rva和size,分别为:
00013000,9d4
OK,关闭lordpe,拿十六进制编辑器,转到 13000+9d4=139d4,把后面的所有代码删除.
imprec上场,修复iat.
Lordpe优化一下,收工.
4、
??
脱壳是完成了,但DOS、PE头部需要重建,哪位指点修补一下吧。
--------------------------------------------------------------
Unpacked:
附件:dump_.zip
[课程]Android-CTF解题方法汇总!