1.壳程序常用API下断
根据壳的原理,在壳需要的一些API处下断点(例如VirtualAlloc,VirtualFree等),然后单步若干次即可找到程序入口点。关于od下断点的方法请参考od下断方法总结。
2.最后一次异常法
od->选项->调试选项->异常,把所有的√去掉
f9运行n次后程序飞,然后重新载入,f9运行n-1次,然后在右下角堆栈窗口找到注释为SE句柄处,记下该处存放的数值,然后在代码窗口按ctrl-g转到该数值,按F4运行到该位置,单步若干次即可到达入口点。
原理:当处理完之后的最后一次异常,壳将会把控制权交换给应用程序, OEP ,也就不远了。
3.利用入口点API
例如一般的Vc++6.0程序,程序入口点处会调用GetVersion函数,故而我们在命令行输入at GetVersion然后按F4运行到这儿,然后执行到返回就会到达入口点附近了。
常用关键API
VC++6.0(Visual C++ 6.0) GetVirsion
VC++7.1(Visual Studio 2003) msvcrt._set_app_type
VC++8.0(Visual Studio 2005) GetSystemTimeAsFileTime
VC++9.0(Visual Studio 2008) GetSystemTimeAsFileTime
VC++10.0(Visual Studio 2010) GetSystemTimeAsFileTime
Delphi 7 &nb

本文详细介绍了四种脱壳技术,包括壳程序常用API下断、最后一次异常法、利用入口点API以及利用入口点代码特征码进行定位。通过这些方法,可以有效地找到并分析程序的入口点,尤其对于VC++和Delphi等不同编译器产生的程序有不同的特征码进行定位。
最低0.47元/天 解锁文章
3309

被折叠的 条评论
为什么被折叠?



