// 导入表 (结构体数组,以一个全零元素为结尾,每一个数组元素,代表一个PE文件导入信息)
// 导入表存储的是从其它PE文件导入过来的函数名、序号,加载到内存之后,还存储这些函数的地址
typedef struct _IMAGE_IMPORT_DESCRIPTOR {
union {
DWORD Characteristics; // 0 for terminating null import descriptor
DWORD OriginalFirstThunk; // (重要)指向一个结构体数组的相对虚拟地址(RVA),即INT
} DUMMYUNIONNAME;
DWORD TimeDateStamp; // 时间戳
DWORD ForwarderChain; // 链表的前一个结构
DWORD Name; // (有用)指向链表库名字的指针(RVA)
DWORD FirstThunk; // (重要)指向一个结构体数组的相对虚拟地址(RVA),即IAT
} IMAGE_IMPORT_DESCRIPTOR; // INT与IAT所指的数据类型(结构体数组 以全零为结尾)
// 在磁盘文件中他们存储的数据是相同的,在加载到内存后,加载器把相应PE文件的函数地址覆盖到这里
// 在磁盘文件中,起作用的只有后面两个成员
// 这个结构占据四个字节,假如最高位为1,那么序号导入起作用,假如最高位为0,那么是最后一个成员起作用
// 判断最高位是否为1使用系统提供的宏IMAGE_SNAP_BY_ORDINAL(),参数就是这个结构体
typedef struct _IMAGE_THUNK_DATA32 {
union {
DWORD ForwarderString; // PBYTE
DWORD Function; // 导入函数的地址,在加载到内存后,这里才起作用
DWORD Ordinal; // 假入是序号导入的用到这里
DWORD AddressOfData; // 假入是函数名导入的用到这里,它指向一个PIMAGE_IMPORT_BY_NAME结构体
} u1;
} IMAGE_THUNK_DATA32; // 上面结构体AddressOfData 指向的结构体
typedef struct _IMAGE_IMPORT_BY_NAME {
WORD Hint; // 函数编号
CHAR Name[]; // 表示函数名的字符串
} IMAGE_IMPORT_BY_NAME, *PIMAGE_IMPORT_BY_NAME;

WinPE基础知识之导入表的更多相关文章

  1. WinPE基础知识之代码解析

    void CMyPE::OnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 // 打开一个文件夹选择对话框 CFileDialog dlg(TRUE); dlg. ...

  2. WinPE基础知识之头部

    1.DOS头 // DOS MZ头,大小为64个字节 typedef struct _IMAGE_DOS_HEADER { WORD e_magic; // EXE标志,“MZ”(有用,解析时作为是否 ...

  3. WinPE基础知识之重定位表

    typedef struct _IMAGE_BASE_RELOCATION { DWORD VirtualAddress; // (重要)需要重定位的位置,这是一个RVA DWORD SizeOfBl ...

  4. ABAP开发基础知识:内表(Internal Table)

    http://www.cnblogs.com/foxting/archive/2012/03/19/2406830.html 内表与结构体基本类似,它同样是程序运行中被临时创建的一个存储空间,它是一个 ...

  5. CSS样式表基础知识、样式表的分类及选择器

    一.CSS基本概念: CSS(Cascading Style Sheet,叠层样式表),作用是美化HTML网页. /*注释区域*/    此为注释语法 二.样式表的分类 1.内联样式表(和html联合 ...

  6. vue.js基础知识篇(7):表单校验详解

    目录 网盘 第12章:表单校验 1.npm安装vue-validator $ npm install vue-validator 代码示例: var Vue=require("vue&quo ...

  7. WinPE基础知识之导出表

    // 导出的东西包括函数(变量.类)地址,序号,函数(变量.类)名 typedef struct _IMAGE_EXPORT_DIRECTORY { DWORD Characteristics; // ...

  8. MySQL基础知识 数据库 数据表

    1.数据库结构 库 表 数据 2. sql(structured query language)结构化查询语言 管理数据库 管理表 管理数据 3.数据库 增删改查 增 create database  ...

  9. PE知识复习之PE的导入表

    PE知识复习之PE的导入表 一丶简介 上一讲讲解了导出表. 也就是一个PE文件给别人使用的时候.导出的函数  函数的地址 函数名称 序号 等等. 一个进程是一组PE文件构成的.  PE文件需要依赖那些 ...

随机推荐

  1. kotlin 类的委托

    fun main(arg: Array<String>) { val baseImpl = baseImpl() demo(baseImpl).printL() } interface b ...

  2. Google Directions API 中路线编码解析

    public List<Location> GetGeoPoints(string encoded) { List<Location> poly = new List<L ...

  3. 007-log-log4j2、slf4j+log4j2

    一.概述 而log4j2的性能无论在同步日志模式还是异步日志模式下都是最佳的. 根本原因在于log4j2使用了LMAX, 一个无锁的线程间通信库代替了, logback和log4j之前的队列. 并发性 ...

  4. ubuntu报错解决和注意事项

    1.在容器中安装expect报错 [root@kube-node3 target]# docker exec -it 36563e55c42b sh$ sudo apt-get install exp ...

  5. Flutter Swiper制作轮播效果

    1.引入flutter_swiper插件 flutter最强大的siwiper, 多种布局方式,无限轮播,Android和IOS双端适配. Flutter_swiper的GitHub地址:https: ...

  6. 02.01Linux中软件的安装、环境搭建

    图1 图2 图3 redis安装 图4 =====================linux下的软件的安装====================安装方式:Yum/rpm/源码安装yum:通过分析rp ...

  7. 【Matlab开发】matlab删除数组中符合条件的元素与散点图绘制

    [Matlab开发]matlab删除数组中符合条件的元素与散点图绘制 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ matlab删除数组中符合条件的元素 如 ...

  8. 洛谷 题解 P2010 【回文日期】

    因为有8个字符,所以可得出每一年只有一个回文日期. 因此只要判断每一年就行了. 做法: 我们先把年倒过来,例如2018年就倒为8102,就得出8102就是回文日期的后四个字符,我们只要判断一下有没有这 ...

  9. lua 模块与包(五)

    一.模块的介绍 模块类似于1个封装库,从Lua 5.1 开始,Lua加入了标准的模块管理机制,可以把一些公用的代码放在一个文件里,以API接口的形式在其他地方调用,用利于代码的重用和降低代码的耦合度. ...

  10. 小菜鸟之oracle触发器

    1.触发器说明 触发器是一种在事件发生时隐式地自动执行的PL/SQL块,不能接受参数,不能被显式调用 2.触发器类型 根据触发器所创建的语句及所影响的对象的不同,将触发器分为以下3类 (1)DML触发 ...