【发布时间】:2018-06-22 18:14:29
【问题描述】:
我只是想了解二进制格式,在学习 PE 格式时,我发现它有一个 IAT 用于查找导入的函数在内存中的可用位置。
我不明白为什么加载程序会有这种额外的间接级别。既然加载的已经知道导入的函数在内存中的加载位置,为什么它不只是在程序集中引用它,而不是填充 IAT,然后在程序执行期间首先访问 IAT,然后从那里找到地址。
我不确定我对此的理解是否正确。有人可以解释一下吗?
【问题讨论】:
-
PE format, what is the use for IAT Directory 的可能重复项:“当加载器使用导入函数的实际地址填充 IAT 时,操作系统会重新映射 IAT 的页面并由分页文件支持它们。所以每个进程都可以有自己的一组导入地址。其余的页面,包括代码和导入表,仍然是共享的。”
标签: windows executable portable-executable