都是我以前总结的笔记,步骤是照着书上打的,书上总结的很全了。
OEP(original entry point)程序入口点
脱壳方法
一,使用单步跟踪法追踪OEP步骤:
1.用OD载入待脱壳文件,如果出现压缩提示,选择“不分析代码”。
2.向下单步跟踪,实现向下的跳转。
3.遇到程序往上跳转的时候(包括循环),在回跳的下一句代码上单击并按键盘上的“F4”键跳过回跳指令。
4.OD中的绿色线条表示跳转没有实现,不必理会,红色线条表示跳转已经实现。
5.如果刚载入程序的时候,在附近有一个CALL指令,那么就要按键盘上的"F7"键跳进这个CALL内,不然程序很容易运行起来。
6.在跟踪的时候,如果执行某个CALL指令后运行,一定要按键盘上的“F7”键进入这个CALL之内再单步跟踪。
7.遇到在POPAD指令下的远转移指令时,要格外注意,因为这个远转移指令的目的地很可能就是OEP。
总结:脱壳就是找程序入口点,入口点就是找POPAD指令,一般POPAD下不远处有一个远跳指令,跳到的地方就是程序的入口点,entry point
二,使用ESP定律追踪OEP的步骤:
1.将待脱壳程序载入到OD中,开始就按键盘上的“F8”键单步跟踪一步,这时如果看到OD右边的ESP寄存器的值有没有变为红色,
如果发现ESP寄存器的值变为红色,执行第2步。
2.在OD的命令行窗口中执行命令hr xxxxxxx,xxxxxxx就是变为红色的ESP寄存器的值,在输入命令之后,一定不要忘记按键盘上的回车键。
3.按键盘上的“F9”键让程序运行起来。
4.使用单步跟踪的方法跟踪到OEP即可。
总结:ESP定律就