zoukankan      html  css  js  c++  java
  • PE文件详解五:PE详解之输入表(导入表)详解1

    首先,我们知道PE 文件中的数据被载入内存后根据不同页面属性被划分成很多区块(节),并有区块表(节表)的数据来描述这些区块。这里我们需要注意的问题是:一个区块中的数 据仅仅只是由于属性相同而放在一起,并不一定是同一种用途的内容。例如输入表、输出表等就有可能和只读常量一起被放在同一个区块中,因为他们的属性都是可 读不可写的。
      
      其次,由于不同用途的数据有可能被放入同一个区块中,因此仅仅依靠区块表是无法确定和定位的。那要怎么办?对 了,PE 文件头中 IMAGE_OPTIONAL_DEADER32 结构的数据目录表来指出他们的位置,我们可以由数据目录表来定位的数据包括输入表、输出表、资源、重定位表和TLS等15 种数据。
      
      输入函数
      
       在代码分析或编程中经常遇到“输入函数(Import Functions,也称导入函数)”的概念。这里我们就来解释下,输入函数就是被程序调用但其执行代码又不在程序中的函数,这些函数的代码位于相关的 DLL 文件中,在调用者程序中只保留相关的函数信息(如函数名、DLL 文件名等)就可以。对于磁盘上的PE 文件来说,它无法得知这些输入函数在内存中的地址,只有当PE 文件被装入内存后,Windows 加载器才将相关DLL 装入,并将调用输入函数的指令和函数实际所处的地址联系起来。这就是“动态链接”的概念。动态链接是通过PE 文件中定义的“输入表”来完成的,输入表中保存的正是函数名和其驻留的DLL 名等。

  • 相关阅读:
    一、定义枚举类,并随机取值
    常用Linux日志查询命令
    一、爬虫之基础
    Jmeter接口自动化-3-生成HTML报告
    Jmeter接口自动化-2-查看结果数只能显示有限的数据,查看全部数据
    Jmeter接口自动化-1-启动报错:Could not initialize class org.apache.jmeter.gui.util.MenuFactory
    三十一、Java基础之Collection集合
    设计模式
    缓存
    Ckeditor配置
  • 原文地址:https://www.cnblogs.com/qintangtao/p/2857185.html
Copyright © 2011-2022 走看看