另类方法脱ASPack2.12R壳的尝试
一
软件经过查壳,为ASPack2.12R壳,采用
ESP定律不能直接脱,用手脱,经过反复总结,用如下办法可以脱:
代码如下:
0046B001 > 90 nop ;
程序入口处
0046B002 60
pushad
0046B003 E8 03000000 call registra.0046B00B
0046B008 - E9 EB045D45
jmp 45A3B4F8
0046B00D 55 push
ebp
0046B00E C3 retn
0046B00F E8 01000000 call registra.0046B015
0046B014 EB 5D jmp short registra.0046B073
我们用Ctrl+S来
搜索:retn 0C
push 0
retn // 在这里F2下断,按F9运行
中断后来至这里:
0046B3B8 C2 0C00 retn 0C
0046B3BB 68 64584500 push registra.00455864 // 这里调用来自00455864经过下看00455864这里是OEP值
0046B3C0 C3 retn // 在这里按F7步入就到OEP
到达OEP,看这
-------------------------
00455864 55 push ebp ; 这就是我们要找的程序OEP,下看
代码比较明显
00455865 8BEC mov ebp,esp
00455867 83C4 F4 add esp,-0C
0045586A B8 F4554500 mov
eax,registra.004555F4
0045586F E8 2008FBFF call registra.00406094
总结:一是找到关键点OEP在此处脱之,
脱壳成功.
二是经过反复试验,才发现在retn 0C这个回转位置下面有一个到达OEP的压栈PUSH操作,找到此处到了OEP,但为什么会这样,本人也未曾搞得很明白.
三.今后同类的ASPACK可用Ctrl+S
搜索.
push 0
retn