手脱JDPack

1.PEID查壳

JDPack

2.载入OD,入口是一个pushad入栈,可以使用ESP,下硬件访问断点,shift+F9

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让跳转实现

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,脱壳吧

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
posted @ 2015-11-15 00:07  许忠慧  阅读(197)  评论(0编辑  收藏  举报