1. 程式人生 > >IDA分析脫殼後丟失導入表的PE

IDA分析脫殼後丟失導入表的PE

alt getc port 資源 rec mut earch 斷點 由於

1. 問題

一些程序經過脫殼後(如用OD的dump插件),一些導入表信息丟失了,導致拖入IDA後看不到API的信息(如右圖所示,第一個紅圈處實際是GetCurrentProcessId),給分析造成極大影響。

技術分享 技術分享

2. 分析

從OD來看,41F480處的值就是API GetCurrentProcessId的地址,也就是殼修改後的導入表的位置,該地址在.rsrc Section內,即程序的資源段內,那麽我們需要修復其導入表,以指向資源段內的地址

技術分享

3. 修復導入表

《加密與解密》第3版的13.4.4節”重建輸入表”(P340)就詳細的講解了利用ImportREC重建輸入表的方法。

1> 用OD脫殼後斷下(如本demo就在CreateMutexW或者CreateEventW上下斷點即可斷到脫殼後的代碼)

2> 找個函數頭作為OEP輸入到Import REC中(當然如果能找到真正的OEP也是可以的),然後點擊”IDAT AutoSearch”,然後點擊”Get Imports”,得到下圖的結果

技術分享

3> 用OD dump脫殼後的PE後,再用Import REC點擊”Fix Dump”即可修復導入表

4. IDA導入修復後的dump

1> 由於dump的導入表不在.rdata中了,IDA不會去自動加載.rsrc段的數據,這樣即使修復了導入表後IDA也不能正常識別API函數,這時需要勾選”Manual Load”項,讓IDA加載.rsrc段

技術分享 技術分享

2> IDA分析完成後,就能正常的顯示dump調用的API了

技術分享

IDA分析脫殼後丟失導入表的PE