zoukankan      html  css  js  c++  java
  • WindowsPE 导入表

    导入表在就是在.rdate 节表当然不绝对

    导入表在 数据目录 第2个 导入函数在第13个  

     可以看到rdata 表 起始2000位置  导入表在2538   iat 在2000

    这里的rva 地址都要转换为foa 地址  就是  当前rva-初始rva+foa偏移 就是文件物理偏移位置

    通过数据找到导入表位置 就是IMAGE_IMPORT_DESCRIPTOR  结构

    typedef struct _IMAGE_IMPORT_DESCRIPTOR {
        union {
            DWORD   Characteristics;            // 0 for terminating null import descriptor
            DWORD   OriginalFirstThunk;         // RVA to original unbound IAT (PIMAGE_THUNK_DATA)
        } DUMMYUNIONNAME;
        DWORD   TimeDateStamp;                  // 0 if not bound,
                                                // -1 if bound, and real date	ime stamp
                                                //     in IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT (new BIND)
                                                // O.W. date/time stamp of DLL bound to (Old BIND)
    
        DWORD   ForwarderChain;                 // -1 if no forwarders
        DWORD   Name;
        DWORD   FirstThunk;                     // RVA to IAT (if bound this IAT has actual addresses)
    } IMAGE_IMPORT_DESCRIPTOR;
    typedef IMAGE_IMPORT_DESCRIPTOR UNALIGNED *PIMAGE_IMPORT_DESCRIPTOR;

    这里5个值依次对应

     

     OriginalFirstThunk ,指向IMAGE_THUNK_DATA  他是一个连续的

    typedef struct _IMAGE_THUNK_DATA32 {
        union {
            DWORD ForwarderString;      // PBYTE 
            DWORD Function;             // PDWORD
            DWORD Ordinal;
            DWORD AddressOfData;        // PIMAGE_IMPORT_BY_NAME
        } u1;
    } IMAGE_THUNK_DATA32;
    typedef IMAGE_THUNK_DATA32 * PIMAGE_THUNK_DATA32;

     这是值指向 

    typedef struct _IMAGE_IMPORT_BY_NAME {
        WORD    Hint;
        CHAR   Name[1];
    } IMAGE_IMPORT_BY_NAME, *PIMAGE_IMPORT_BY_NAME;

     

     FirstThunk 也是同样指向 

    _IMAGE_IMPORT_BY_NAME 

    所以他是一个双桥结构

     最后指向一样 不过 FirstThunk  在载入内存时会被替换成真正的函数地址 载入od 查看402000地址

     

    从此山高路远,纵马扬鞭。愿往后旅途,三冬暖,春不寒,天黑有灯,下雨有伞。此生尽兴,不负勇往。
  • 相关阅读:
    爬虫学习——网页解释器简介
    爬虫学习——urllib2三种方法的实例
    JSLint在idea编译器中报错
    elasticsearch学习之根据发布时间设置衰减函数
    通过Function Score Query优化Elasticsearch搜索结果(综合排序)
    Java中List, Integer[], int[]的相互转换
    CentOS7查看和关闭防火墙
    Elasticsearch 自定义多个分析器
    利用grep-console插件使Intellij idea显示多颜色调试日志
    为ElasticSearch添加HTTP基本认证
  • 原文地址:https://www.cnblogs.com/feizianquan/p/15083041.html
Copyright © 2011-2022 走看看