写给正在起步的,像我这样对脱壳和破解有强烈兴趣的朋友.
一开始从入门篇转到进阶篇,花了好几天时间重复去阅读教程,看了很多,照着做了好几次,还是不甚明白.但是自己脱的壳逐渐多一点了,就有头绪了.我的上一篇帖子《菜鸟脱壳成长历程》是真的很菜的菜鸟可以照做逐渐明白的,姑且当作对RAINSAILD的破解实例教程学习所做的笔记.
学习是没有捷径可以走的,每一个人可以经历的事情实在有限,如果有机会当然多积累一点经验比较好.实
例中1-8的目标分别是用 Petite2.2 , Telock0.98 , PEncrypt V4.0 , EXE Stealth2.72 , yoda's
Crypter V1.2 , PE-SHiELD V0.25 , 仙剑 V0.100x , Skvp1.32加的壳.属于初级加密壳.其中好多软件
都有检测硬件断点,那么ESP定律的使用就遇到了麻烦,软件校验到有硬件断点直接抛出错误然后退出了.
不单是硬件断点,初期对3个重要函数下断点也是不可行的,同样被校验出来.按照教程的方法做,就是只忽略内存访问异常.(ollydbg中调试选项的异常分支下面)然后按shift+F9跳到最后SEH观察堆栈,再用Ctrl+G跳到SE异常处理程序,F2下断点再shift+F9运行到断点处,接着取消断点,然后从这里往下继续跟踪.呵呵,很复杂吧,对于菜鸟来说很容易犯迷糊.而且即使是作者自己文章里写,也有很多时候跟不下去了.那么我就要以很少的字句介绍一种实用而且简单的办法:下内存断点.
我的做法是:忽略所有异常,ALT+M打开memory map
Memory map
地址 大小 属主 区段 包含 类型 访问 初始访问 已映射
为
00400000 00001000 NOTEPAD PE 文件头 Imag R RWE
00401000 00004000 NOTEPAD PESHiELD 代码 Imag R RWE
00405000 00001000 NOTEPAD PESHiELD 数据 Imag R RWE
00406000 00001000 NOTEPAD PESHiELD Imag R RWE
00407000 00005000 NOTEPAD PESHiELD 资源 Imag R RWE
0040C000 00001000 NOTEPAD PESHiELD 重定位 Imag R RWE
0040D000 00003000 NOTEPAD ANAKIN2K SFX,输入表 Imag R RWE
只关心属主是本程序的段,看好,两个区段分别是数据段和代码段.我先对数据段下内存断点,然后F9运行,
接着对代码段下内存断点,再F9运行.以上8个实例均可以经过这两步直接跳到OEP处.
如果说原理,这个我说不好,毕竟不能全面把握,所以希望大师们能够将计就计,让我抛砖引玉得以成功,内存断点的跟踪方法如果可以得心应手,估计能够解决很多疑难的壳.而且方法特别简单,菜鸟都可以做到.
自此,一共4种常用的方法,当然,我觉得最重要掌握"下内存断点,ESP定律,模拟跟踪"这3种就可以了.如果
遇到强劲的壳,恐怕就我们目前这点经验学的东西再多也是无济于事的.这3种,一般的壳你忽略所有异常,某些时候根据情况开启几个异常选项,目的是找到最后一个SE处理程序,从上面接下去跟踪,只要让你跳过了暗桩和检测校验的代码,那么这3种方法可以继续使用.
最后,这些例子还有教程,可以从网上搜索《破解实例信息资源》(豪华版)找到.当然,作者费了很大心血在上面,编得也不错,但是不主张咬文嚼字.
[课程]Linux pwn 探索篇!