IDA分析脱壳后丢失导入表的PE

Posted organic

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IDA分析脱壳后丢失导入表的PE相关的知识,希望对你有一定的参考价值。

 

1. 问题

一些程序经过脱壳后(如用OD的dump插件),一些导入表信息丢失了,导致拖入IDA后看不到API的信息(如右图所示,第一个红圈处实际是GetCurrentProcessId),给分析造成极大影响。

image  image

 

2. 分析

从OD来看,41F480处的值就是API GetCurrentProcessId的地址,也就是壳修改后的导入表的位置,该地址在.rsrc Section内,即程序的资源段内,那么我们需要修复其导入表,以指向资源段内的地址

image

 

3. 修复导入表

《加密与解密》第3版的13.4.4节”重建输入表”(P340)就详细的讲解了利用ImportREC重建输入表的方法。

1> 用OD脱壳后断下(如本demo就在CreateMutexW或者CreateEventW上下断点即可断到脱壳后的代码)

2> 找个函数头作为OEP输入到Import REC中(当然如果能找到真正的OEP也是可以的),然后点击”IDAT AutoSearch”,然后点击”Get Imports”,得到下图的结果

image

3> 用OD dump脱壳后的PE后,再用Import REC点击”Fix Dump”即可修复导入表

 

4. IDA导入修复后的dump

1> 由于dump的导入表不在.rdata中了,IDA不会去自动加载.rsrc段的数据,这样即使修复了导入表后IDA也不能正常识别API函数,这时需要勾选”Manual Load”项,让IDA加载.rsrc段

image               image

 

2> IDA分析完成后,就能正常的显示dump调用的API了

image

以上是关于IDA分析脱壳后丢失导入表的PE的主要内容,如果未能解决你的问题,请参考以下文章

脱壳系列_0_FSG壳_详细版

win7开机提示由于系统注册表文件丢失或损坏

故障分析 MySQL 数据”丢失”事件之 binlog 解析应用一则

脱壳系列 - 输入表

攻防世界reverse进阶easyre-153 writeup(#gdb调试父子进程#ida版本差异)

IDA 调试 Android 方法及简单的脱壳实现