一篇学会脱壳——06.exe脱壳

花指令混淆,IAT加密和反调试,是一个很好的教学练习壳,这里详细写下脱壳步骤。
壳的IAT加密原理:一般壳代码会申请一段堆空间,用来执行解密代码解密出来真正的API地址,把程序的IAT表改成申请的堆空间地址。程序在正常运行的时候CALL会到这个堆空间执行解密,这样才能正确获取API地址。壳相当于给程序套上了头箍。

对于IAT加密壳我们要找三个关键点:获取API函数地址位置、加密IAT位置(不是必须)、填充IAT位置。
我们的思路:在壳获取API函数地址时,把它偷走拷贝一份到变量中,当壳忙活一顿加密操作之后,准备填充加密后的地址(壳申请的堆空间)到IAT中时,我们把它给换成原来的API函数地址。这样,壳代码等于没加密。
实现方法:OD脚本。因为IAT加密是个工作量很大的循环,我们也只能写代码改变它。
一篇学会脱壳——06.exe脱壳_第1张图片
首先拖进OD,发现稍微移动紫色光标,代码就会变形。
一篇学会脱壳——06.exe脱壳_第2张图片
这是由于OD对数据和代码有多个解析结果导致的,遇到这种情况最好不要乱动,按ctrl+up键微调
F7一步,看到了popad,ESP下硬件断点先试试ESP定律吧,F9运行发现跑完了,于是就应该想到硬件断点可能被干掉了。
我们需要更详细的信息。

1.关闭OD的自动忽略异常功能
2.关闭OD中strongOD的skip some execptions(跳过某些异常)

你可能感兴趣的:(Windows逆向,脱壳,加密壳)