Import REConstructor可以從雜亂的IAT中重建一個(gè)新的Import表(例如加殼軟件等),它可以重建Import表的描述符、IAT和所有的ASCII函數(shù)名。
用它配合手動(dòng)脫殼,可以脫UPX、CDilla1、PECompact、PKLite32、Shrinker、ASPack, ASProtect等殼。
在運(yùn)行Import REConstructor之前,必須滿足如下條件:
1) 目標(biāo)文件己完全被Dump到另一文件;
2) 目標(biāo)文件必須正在運(yùn)行中;
3) 事先要找到真正的入口點(diǎn)(OEP);
4) 最好加載IceDump,這樣建立的輸入表較少存在跨平臺(tái)的問題。
【使用方法】
1.目標(biāo)文件已完全被Dump,另存為一個(gè)文件
2.目標(biāo)文件必須正在運(yùn)行中
3.事先找到目標(biāo)程序真正的入口(OEP)或IAT的偏移與大小
以加殼RebPE.exe為例,首先OD加載:
調(diào)試到00413001,設(shè)置硬件斷點(diǎn)hr esp
F9斷下來(lái),單步調(diào)到OEP處:
這時(shí)啟用Loadpe工具,找到對(duì)應(yīng)的進(jìn)程,右鍵先執(zhí)行"correct ImageSize”,再執(zhí)行"dump full",保存為dumped.exe
運(yùn)行ImportREC,選擇RebPE.exe進(jìn)程:
在右下角OEP處埴上正確的OEP的RVA值,這里填1130,默認(rèn)時(shí),ImportREC重建輸入表時(shí)會(huì)同時(shí)用此值修正入口點(diǎn),同時(shí)提供正確的OEP有助于分析IAT的準(zhǔn)確位置,單擊"IAT AutoSearch"按鈕,讓其自動(dòng)檢測(cè)IAT偏移和大小,如果出現(xiàn):
表示輸入的OEP發(fā)揮了作用,如果沒有,則要手動(dòng)填入IAT的RVA和大小,
單擊"Get Imports"按鈕,讓其分析IAT結(jié)構(gòu)得到基本信息,如下:
本例中所有API都被正確識(shí)別了,顯示valid:YES,如果不能識(shí)別,就會(huì)顯示成valid:NO,單擊"Show Invalid"按鈕分析所有的無(wú)效信息,
在Imported Functions Found這一窗口中單擊右鍵,選擇Thrace Level1(Disasm),再單擊"Show Invalid
最后一步,把前面提出的IAT部分都加上Dump.exe,選擇"Add new section",單擊Fix Dump,選擇剛抓取的Dump.exe,此時(shí)會(huì)生成一個(gè)叫Dump_exe的文件,而輸入表會(huì)放在新增的.mackt區(qū)塊上,此時(shí)IAT修復(fù)完成