-
-
[旧帖]
[原创]ESP定律法脱PECompact 2.x -> Jeremy Collake
0.00雪花
-
发表于:
2014-1-17 15:18
2238
-
[旧帖] [原创]ESP定律法脱PECompact 2.x -> Jeremy Collake
0.00雪花
新人在看雪第一次发贴,请各位大侠们手下留情,多多关照
。因为用这个插件的时候弹广告(不多,一天一次)再加上刚看了ESP定律相关方面的东西,所以决定试试ESP定律,看能不能把它破解了(感谢制作者先,这只是技术交流)。因为时间的关系先发出它的脱壳部分。后续再发破解部分。
整个过程分为两个部分:
1、 脱壳;
2、 总结;
(一)脱壳
先使用PEid看一下发现程序加了壳(废话,有壳了才需要脱壳)
PECompact 2.x -> Jeremy Collake
果断请出OD,刚按下第二个F8发现ESP寄存器变红了,地址为:0012FFC0。在这输入
回车。接着F9,来到了这:
一看是在系统空间,不用慌。看一下堆栈和寄存器:
不是访问堆栈中0012FFC0时被断下的,再看一下代码:
此时EBX的值是:12FFBC。EBX+4=12FFC0,原来是访问这个断下来的。继续F9。
同上,继续F9:
这次是访问堆栈引起的中断,但是从代码来看不像是快到OEP了。因为堆栈接下来又长回去了。但为了安全,换用单步,在数次F8(此处可以继续F9,但从脱壳者的角度看,还是选择F8)后:
这个特征就是ESP定律中的恢复现场了。(如果在上一步按F9,将直接跳到这)果断F8:
这就是苦寻的OEP了。
最后就是Dump和修复了(如果Dump的文件可以运行就不用修复了)。过程如下:
在这里分别选择方式一和方式二生成两个文件(
不知道有什么区别,所以都Dump了):
第4步中分别抓取刚刚Dump的两个文件:
生成两个新的文件:
结果只有第2个可以运行。第一个不行。我暂时不知道原因,有知道的大侠请告知。脱壳过程完毕。
(二)总结
对于文中的一路F9,可能会有事后诸葛亮的嫌疑。因为一般用ESP定律的时候都是按一次F9后一直单步,直到OEP。其实并非如此。ESP定律用的是堆栈平衡原理,如果堆栈都不平衡又怎么会是OEP呢。所有在当F9被断下后,我们可以看下是什么原因导致的。如果和堆栈不相关,我相信OEP还没到,所以可以选择再次F9。以上纯属个人的想法,为了验证此想法,又找了个加了ASP的notepad,结果一步就到了OEP。因为样本太少,可能这个方法只是适应此例,有不对的地方,请各位大侠们告知。
[课程]FART 脱壳王!加量不加价!FART作者讲授!