本帖最后由 Sound 于 2015-10-11 19:39 编辑
声明:
1.本教程中使用的例子为:http://www.52pojie.cn/thread-10688-1-1.html 吾爱脱壳练习第三课中的例子,一个比较简单的压缩壳,大家也可以自己试试,选这个例子进行脱壳联系是因为在脱壳前我就已经知道OEP的位置了,这样子有助于提高我的脱壳能力,我可以通过对比来确定我是否找到了正确的OEP位置,在这里感谢吾爱的各位大神对我们的帮助
2.方法一为本人自己脱了好半天才脱掉的方法,方法二为上面链接里别人的ESP思路,我在这里只是照搬,并非自己的思路,希望大家海涵,我对第二种方法F9运行三次不太明白,因为按照最后一次异常的方法,也是可以运行到第四次的,所以我不太明白为什么只运行三次。如果有知道的大神也可以跟帖赐教一下,感激不尽!
3.我发帖的目的呢只是纪录自己小白成长过程中思路,锻炼自己的能力,当然以后也会不定期的进行发帖。其实我也是小白,所以不要崇拜我,当然大神也不要喷我。
本帖仅供交流学习,另如有转载请注明作者。
方法一:1. OD查壳—nSpack3.7的壳 2. 载入OD 看起来很眼熟,F8一次,然后下面就可以使用ESP定律了,使用ESP定律下断点,然后F9四次 3. F9四次后落到这个位置 接下来就是不停F8了,提前跟大家讲,注意点: ①F8过程中不管是向上跳还是向下跳我们都让他实现,这时候大家会说了,按照正常逻辑,向上的跳转不是应该在下面一行下断跳过去吗?起初我也是这样做的,但是程序会跑飞,具体的原因我也不知道是为什么,所以我就让他跳上去看看 ②接下来F8过程中大家可能会有疑惑,因为貌似我们陷入了一个死循环中,代码在两个跳转中不停循环跳转,这个时候希望大家不要放弃,为什么呢?第一:我们首先可以看到的是地址框,虽然貌似两个跳转之间的反汇编代码是相同的,但是事实上我们在跳转过程中两个跳转的地址是一直在发生变化的。第二:在循环过程中,我们可以看到寄存器的变化,看起来就像是在修复什么或者是写入什么,具体的希望大神可以解释下,总之就是不停的在变化 接下来我们要做的就是F8等他自己跳出去 4. 循环调出来了,大家看下位置 来到这里呢大家可以继续F8,不要着急,马上就出去了,F8运行到retn那个位置的时候就会跳转到真正的OEP了 5. OK,来到OEP OK,来到OEP了,这里大家就可以进行脱壳了,可能友的朋友这时候就会问了,为什么反汇编窗口都是灰色看不懂的东西?呵呵,其实我也看不懂,这个时候大家可以点右键---分析---删除模块分析,然后就显示出反汇编代码了,当然直接脱也可以,为了让大家看清楚,让大家看看删除分析之后的截图 OK,这样就很清晰了把? 6. 脱壳查壳运行 脱壳大家都懂得,我也就不介绍了。再给大家介绍一种脱壳方法,也是ESP定律,这个是我在自己脱完壳后看别人的脱壳思路时候发现的,比我的要简洁的多。 方法二:1. 前面查壳就不多废话了,直接载入OD了 载入后F8两次到第一个call可以使用ESP定律,F9运行三次
2.运行三次后的位置 看到没?F9运行三次后直接倒了我们方法一中跳出循环后上面的几行代码哪里,然后F8走下去,到retn哪里就跳到OEP了。 后面的不多说了跟第一种方法一样的。
您的热心是对发帖者最大的鼓励!
您的热心是对发帖者最大的鼓励!
您的热心是对发帖者最大的鼓励!
重要的事情说三遍 |
|