// 导出的东西包括函数(变量、类)地址,序号,函数(变量、类)名
typedef struct _IMAGE_EXPORT_DIRECTORY {
DWORD Characteristics; // (没用) 保留值,恒为0
DWORD TimeDateStamp; // (没用) 和文件头中的时间一样的
WORD MajorVersion; // (没用) 主版本号
WORD MinorVersion; // (没用) 次版本号
DWORD Name; // (有用) 本PE文件的名字,也就是谁导出的这些函数(变量,类)
DWORD Base; // (有用) 序号基数
DWORD NumberOfFunctions; // (重要) 函数数量
DWORD NumberOfNames; // (重要) 函数名称数量
DWORD AddressOfFunctions; // (重要) 函数地址表的相对虚拟地址 // RVA from base of image
DWORD AddressOfNames; // (重要) 函数名称表的相对虚拟地址
DWORD AddressOfNameOrdinals; // (重要) 序号的相对虚拟地址
} IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY;
A:导出表应该被安排在.edata中,不过这个段一般都会合并到.rdata中。
B:有一个序号基数,通过序号表得到的序号再加上这个序号基数才是真正的函数序号。
C:导出的函数地址表、序号表、函数名称表的关系。
(1)序号不是按顺序排列的;
(2)序号与函数名是一一对应的,两个表中相同位置的元素相对应。这也说明了结构体中为什么没有序号的数量,因为序号的数量和函数名的数量是一样的
(3)序号会有中断,比如可能会没有1,有2 ,没有5,有6,但是这并不代表缺失的这个序号没有所对应的函数地址
(4)函数个数会比函数名个数多,多出来的这些函数,可能是用序号导出的函数,也可能是一个无效函数,地址填充0;
(5)序号表元素的值,对应着函数地址表的位置,那一个位置中的函数地址,是这个序号所对应的函数名的函数地址,由此,三个表联系起来;
(6)函数地址表中元素,有地址值,但是序号表中没有序号与之对应,说明这是一个序号导出元素,这个序号成为虚序号没有函数名,它的序号就是它自己在函数地址表中的位置;(当然这个位置加上序号基数,才是它真正的序号)
(7)函数地址表中元素,填充为0,说明这是一个无效的函数,也不会有序号与函数名与之对应

举例

函数表中有5、7两个位置是无效函数;2,3,4,6,8位置是函数名导出的(要注意函数名的位置与地址表中地址的位置并不相同);1,9是序号导出的函数,序号就是它本身的位置。

最新文章

  1. JAVABeanUtils
  2. 【转】通过自定义的URL Scheme启动你的App
  3. css 笔记
  4. 跟我一起学WCF(9)——WCF回调操作的实现
  5. javascript 数组对象与嵌套循环写法
  6. 数理方程:Laplace变换 & 留数(更新中)
  7. [LeetCode] 205. Isomorphic Strings 解题思路 - Java
  8. cf C. Sereja and Algorithm
  9. ACM HDU 1559 最大子矩阵
  10. 2017最新安装mysql教程及遇到的问题解决Windows下
  11. 基于telegraf+influxdb+grafana进行postgresql数据库监控
  12. 【设计原则和编程技巧】单一职责原则 (Single Responsibility Principle, SRP)
  13. 【原创】ACR傻瓜式破解IC芯片卡
  14. input 内容改变的触发事件
  15. Pwn With longjmp
  16. Runtime Errors:CALL_FUNCTION_REMOTE_ERROR/CALL_FUNCTION_NOT_REMOTE
  17. 一行代码解决各种IE的兼容问题
  18. HTML5+Bootstrap 学习笔记 2
  19. JavaScript---复选框全选的多种实现
  20. SqlServer——常见问题汇总

热门文章

  1. Vue插件编写、用法详解(附demo)
  2. Swift 循环
  3. 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_24-CMS前端页面查询开发-使用钩子方法实现立即查询
  4. SecureCRT 添加Mac Localhost
  5. java 注解@interface
  6. dlopen, dlsym今天才刚知道干什么用的,羞死人了
  7. linux基础之文件类型与权限
  8. AbstractQueuedSynchronizer 源码解读(转载)
  9. js 跳转传递汉字参数
  10. js统计页面中各个标签出现的次数,倒序排列