zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    01-HTML控件
    08-多线程
    07-Log日志
    06-File-文件
    05-函数式编程
    04-异常使用处理
    03-常用包模块
    02-包
    Java NIO(六) Selector
    Java NIO(四) Scatter/Gather
  • 原文地址:https://www.cnblogs.com/organic/p/7045601.html
Copyright © 2011-2022 走看看