热门排行
简介
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修复完成
文字描述使用步骤如下:
(1)找被脱壳的入口点(OEP);
(2)完全Dump目标文件;
(3)运行Import REConstructor和需要脱壳的应用程序;
(4)在Import REConstructor下拉列表框中选择应用程序进程;
(5)在左下角填上应用程序的真正入口点偏移(OEP);
(6)按"IAT AutoSearch"按钮,让其自动检测IAT位置, 出现"Found address which may be in the Original IAT.Try 'Get Import'"对话框,这
表示输入的OEP发挥作用了。
(7)按"Get Import"按钮,让其分析IAT结构得到基本信息;
(8)如发现某个DLL显示"valid :NO" ,按"Show Invalids"按钮将分析所有的无效信息,在Imported Function Found栏中点击鼠标右键,选
择"Trace Level1 (Disasm)",再按"Show Invalids"按钮。如果成功,可以看到所有的DLL都为"valid:YES"字样;
(9)再次刷新"Show Invalids"按钮查看结果,如仍有无效的地址,继续手动用右键的Level 2或3修复;
(10)如还是出错,可以利用"Invalidate function(s)"、"Delete thunk(s)"、编辑Import表(双击函数)等功能手动修复。
(11)开始修复已脱壳的程序。选择Add new section (缺省是选上的) 来为Dump出来的文件加一个Section(虽然文件比较大,但避免了许多不必要
的麻烦) 。
(12)按"Fix Dump"按钮,并选择刚在(2)步Dump出来的文件,在此不必要备份。如修复的文件名是"Dump.exe",它将创建一个"Dump_.exe",此外
OEP也被修正。
(13)生成的文件可以跨平台运行。