**1.单步法**
OD载入,不分析代码
近CALL-F7,远CALL-F8,实现向下跳转
有回跳处,下一句代码处F4(向上跳不实现)
大的跳转,很快就会到OEP(大跨段,JMP***或JE***或RETN、CALL)
**2.一步直达法**
只适合少数壳,如UPX,ASPACK
CTRL+F—输入:POPAD.
回车查找—F2下断—F9运行到此处.
来到大跳转处,F8到OEP.
**3.ESP定律法**
F8,观察OD右上角寄存器中ESP有没有实现(红色突变)
通常在pushad等关键句之下
命令行下 DD xxxxx(当前代码ESP值)或者数据窗口跟随,回车
DD选中的下端地址,断点—硬件访问—DWORD断点,shift+F9运行,到跳转处F8 到OEP
**4.内存镜像法**
OD载入软件,点选项—调试选项—忽略全部—CTRL+F2重载
ALT+M打开内存镜像,找程序第一个.rsrc;
F2下断—SHIFT+F9运行到断点,
再打开找到程序第一个.rsrc上面的.code处(就是00401000处),
F2下断—SHIFT+F9或无异常按F9,到OEP
**5.SFX自解压法(压缩壳**)
设置OD,忽略所有异常.
切换到SFX选项卡,选择“字节模式跟踪实际入口”,确定.
重载—“否”压缩代码,到OEP.
**6.最后一次异常法**
OD打开—点选项—调试选项—去掉所有异常勾选—CTRL+F2重载.
SHIFT+F9.直到程序跑飞,记下次数M
CTRL+F2重载—按SHIFT+F9(次数为M-1次)
按CTRL+G—输入堆栈右下角的SE句柄值的地址.
往下走,retn下一语句F2下断—SHIFT+F9到断点处.
去断按F8,到OEP.
**Overlay处理**
用查壳工具查壳后,壳类型后边有[Overlay]这样的说明,软件就是含有附加数据
工具处理:Overlay最终版
**手工处理**:
~~~
1.用PE分析工具打开区段界面,看最后一行数据或者name一栏中名为'ExtraDat'的
2.该数据段,没有虚拟偏移地址。也没有虚拟大小,因而不会映射到内存中。
3.用实际大小减去实际偏移得到XXXX,用16进制编辑工具打开原程序找到该地址
4.在此处右键,选块开始-拉倒最后-选块结束;复制到脱壳后文件的结尾
~~~