Import REConstructor可以从杂乱的IAT中重建一个新的Import表(例如加壳软件等),它可以重建Import表的描述符、IAT和所有的ASCII函数名。
用它配合手动脱壳,可以脱UPX、CDilla1、PECompact、PKLite32、Shrinker、ASPack, ASProtect等壳。
在运行Import REConstructor之前,必须满足如下条件:
1) 目标文件己完全被Dump到另一文件;
2) 目标文件必须正在运行中;
3) 事先要找到真正的入口点(OEP);
4) 最好加载IceDump,这样建立的输入表较少存在跨平台的问题。
使用方法
1.目标文件已完全被Dump,另存为一个文件
2.目标文件必须正在运行中
3.事先找到目标程序真正的入口(OEP)或IAT的偏移与大小
以加壳RebPE.exe为例,首先OD加载:
调试到00413001,设置硬件断点hr esp
F9断下来,单步调到OEP处:
这时启用Loadpe工具,找到对应的进程,右键先执行"correct ImageSize”,再执行"dump full",保存为dumped.exe
运行ImportREC,选择RebPE.exe进程:
在右下角OEP处埴上正确的OEP的RVA值,这里填1130,默认时,ImportREC重建输入表时会同时用此值修正入口点,同时提供正确的OEP有助于分析IAT的准确位置,单击"IAT AutoSearch"按钮,让其自动检测IAT偏移和大小,如果出现:
表示输入的OEP发挥了作用,如果没有,则要手动填入IAT的RVA和大小,
单击"Get Imports"按钮,让其分析IAT结构得到基本信息,如下:
本例中所有API都被正确识别了,显示valid:YES,如果不能识别,就会显示成valid:NO,单击"Show Invalid"按钮分析所有的无效信息,
在Imported Functions Found这一窗口中单击右键,选择Thrace Level1(Disasm),再单击"Show Invalid
最后一步,把前面提出的IAT部分都加上Dump.exe,选择"Add new section",单击Fix Dump,选择刚抓取的Dump.exe,此时会生成一个叫Dump_exe的文件,而输入表会放在新增的.mackt区块上,此时IAT修复完成