1.PEID查壳
JDPack
2.载入OD,入口是一个pushad入栈,可以使用ESP,下硬件访问断点,shift+F9
[Asm] 纯文本查看 复制代码 0040E000 > 60 pushad ; //入口
0040E001 E8 00000000 call JDPACK.0040E006 ; //ESP
0040E006 5D pop ebp
0040E007 8BD5 mov edx,ebp
0040E009 81ED C62B4000 sub ebp,JDPACK.00402BC6
0040E00F 2B95 3D344000 sub edx,dword ptr ss:[ebp+0x40343>
3.ESP落脚点,落脚点的下一行就是一个retn,经过实践证明,这就是跳向OEP的关键跳,F8让跳转实现
[Asm] 纯文本查看 复制代码 0040E3FD 50 push eax ; //ESP落脚点
0040E3FE C3 retn ; //指向OEP的关键跳
0040E3FF 23E8 and ebp,eax
0040E401 72 00 jb short JDPACK.0040E403
0040E403 0000 add byte ptr ds:[eax],al
0040E405 8CC8 mov ax,cs
0040E407 50 push eax
4.来到OEP,脱壳吧
[Asm] 纯文本查看 复制代码 004035C9 6A 00 push 0x0 ; //来到OEP
004035CB E8 A20A0000 call JDPACK.00404072
004035D0 A3 5B704000 mov dword ptr ds:[0x40705B],eax
004035D5 68 80000000 push 0x80
004035DA 68 2C754000 push JDPACK.0040752C
004035DF FF35 5B704000 push dword ptr ds:[0x40705B]
004035E5 E8 820A0000 call JDPACK.0040406C
004035EA E8 87070000 call JDPACK.00403D76
004035EF 6A 00 push 0x0
004035F1 68 0B364000 push JDPACK.0040360B
5.运行,查壳
运行OK,查壳:TASM / MASM
|