手动解压DLL后重建IAT

逆向工程 dll 开箱 倾倒 进口改造
2021-06-11 11:47:34

我一直在尝试解压这个 dll,我很确定0x7c3ea902或者0x1007A9D2(禁用 ASLR)或者只是0x7A9D2OEP。

在此处输入图片说明

但是在使用 OllyDumpEx 转储并尝试使用ImpREC修复 IAT 之后,它就行不通了。

在此处输入图片说明

以下是ImpREC的结果

在此处输入图片说明

我的问题是,当 OEP 最有可能正确时,为什么会检测到无效导入?

1个回答

我通过手动修复每个丢失的导入 API 解决了这个问题。

首先,我使用BinText解压后的dll 进行了文本转储,在其中找到了导入的 API 列表。

在此处输入图片说明

然后我将它与ImpRec检测到的 API 列表进行比较,我注意到调用在文本转储中的顺序相同。

在此处输入图片说明

所以我只是双击ImpRec上无效导入的并手动输入正确的 API(基于文本转储上显示的顺序),如下所示:

在此处输入图片说明

我对每个无效的 API 重复此操作并修复了转储,这一次一切正常。

从最初的问题总结一下。OEP 是正确的。检测到的 API 是正确的。它只需要一点点干预来修复检测到的无效导入。

谢谢!