以下代码是未定义的行为,实现是由标准定义还是定义的?我找不到任何关于将整数分配给自己的地址的参考.
volatile int x = (int)&x;
Run Code Online (Sandbox Code Playgroud)
此代码转换为:
lea eax,[ebp-4]
mov dword ptr [ebp-4],eax
Run Code Online (Sandbox Code Playgroud) 在 PE 格式中,我们有导入表目录(由 访问IMAGE_DIRECTORY_ENTRY_IMPORT)和 IAT 目录(由 访问IMAGE_DIRECTORY_ENTRY_IAT)都是可选头数据目录的一部分。
使用导入表,加载器动态加载和解析必要的库和函数。这是通过迭代导入地址表 RVA(Thunk 表)来完成的,该表是导入表的一部分。
那么,如果我们使用导入目录进行导入解析,我们需要 IAT 目录做什么?
我一直在阅读Microsoft PE 规范,但找不到答案。此外,SO 中有一些问题,但其中大多数使用 IAT 来引用 Thunk 表而不是 IAT 目录。
谢谢
编辑
我认为导入地址表是导入表目录中的一个字段,与称为 IAT 目录的导入地址表之间存在混淆。我的问题是关于 IAT 目录。
再次感谢