IDA分析脫殼後丟失導入表的PE
阿新 • • 發佈:2017-06-18
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