ESP大多数压缩壳的定律可以找到OEP,但是对于FSG壳失效。目前常见的FSG手脱的方法大多是单步向下,一步就能找到。OEP但是会消耗时间,可能会跟飞。可以通过OD中的SFX(自解压)快速找到设置选项OEP。
(1)查壳
首先,样本检壳:
同时,可执行文件的导入表必须被壳损坏:
(2)寻找OEP并dump
接下来用OD首先加载可执行文件SFX选项中选择字节跟踪真实入口
OD中重新运行后,仍在SFX选项中选择停在自解压器入口点,然后点击确定。
这时可以看到左下角 : SFX: read=0x...不断增加,这就是OD自解压操作(因为FSG是压缩壳)。当左下角停止读写时,程序就到了OEP:
在OEP处使用OllyDump此时注意不要选择重建导入表,FSG壳会对IAT进行破坏,IAT需要进一步修复。
将脱壳后保存的程序命名为dump_fsg.exe。
(3)修复IAT
修复IAT需要借助ImportREC工具,使用ImportREC附加到程序:
填写OEP偏移地址(5BE98)之后,点击自动搜索:
自动搜索IAT的RVA地址为7C地址为170IAT为了验证自动搜索验证自动搜索结果是否正确C170(偏移地址)OD记得加4万个基址:
可以看出RVA :7C170并不是IAT红框的一部分也是,所以开始RVA应为7C000.
在ImportREC中变参数:
点击获取导入表:
点击显示无效函数按钮找到大量无效函数:
发现无效函数的指针指向7FFFFFFF,这也是FSG将无效函数指针插入壳体的特性IAT中以混淆IAT。右击无效函数,选择剪切指针数据:
这个过程可能需要一段时间,因为无效指针稍多。结果如下:
然后点击修复转存文件dump下来的dump_fsg.exe:
然后你可以在同一目录下看到它dump_fsg_.exe文件。
对dump_fsg_.exe查壳:
对dump_fsg_.exe查导入表:
至此FSG压缩壳成功脱壳。