gpt4 book ai didi

c++ - IAT-物理地址中的dll-指针?

转载 作者:行者123 更新时间:2023-11-28 06:39:59 25 4
gpt4 key购买 nike

到处都有这样的解释,即导入函数的进程的 IAT 中填充了从它想要的 dll 中导出的函数的地址。

但是这些指向导入函数的指针在什么地址空间?如果它是一个虚拟地址,那将没有意义,因为导入进程有自己的虚拟空间,而那些 dll 函数不在其中。

但是保护模式不允许物理寻址,所以也不能是物理地址。给了什么?

最佳答案

IAT 的全部原因正是因为 DLL 被加载到虚拟地址空间中某个未知的偏移量。对于 ASLR,它实际上是故意不可预测的。 IAT 在 固定位置用作跳转表, 位于不可预测位置的函数。

显然,只有在 DLL 加载到进程空间后,才能填充 IAT。这实际上是 LoadLibrary 执行的关键操作。实际加载 DLL 可能会在稍后发生,因为它是按需分页的。

关于c++ - IAT-物理地址中的dll-指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26152666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com