脱壳进阶篇

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值