dll-IAT中的指针-物理地址

dll- pointers in IAT- physical addresses?

本文关键字:物理地址 指针 dll-IAT      更新时间:2023-10-16

任何地方的解释都是,导入函数的进程的IAT都填充了从它想要的dll导出的函数的地址。

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

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

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

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