如何用x86指令调用IAT中的函数?PE加载异常排查
PE文件IAT与重定位表问题排查
这是「如何生成重定位表」问题的后续:
- 已手动构建包含导入表、ILT(导入查找表)、IAT(导入地址表)及Hint/Name表的.idata段,使用PE-bear工具检查时所有结构显示正常,.text段反汇编视图中PE-bear能正确识别call指令引用的函数名称:

但实际运行二进制文件时出现异常:
- 文件无法正常执行,x64dbg(含32位版本)无法识别call指令对应的函数,怀疑PE加载器未正确修正IAT,但无法定位原因
- x64dbg中看不到"Hello World"字符串,推测是未填充.reloc段导致的
核心疑问:IAT是否也需要在.reloc段中添加重定位项?
调试相关截图:
- 程序在第一条call指令处崩溃:

- 对比Visual Studio生成的同类可执行文件,x32dbg能正常识别call指令引用的函数名称:

附注:本人刚学习汇编,可能遗漏了CPU标志设置这类细节,当前call指令传入的是IAT的RVA。
内容的提问来源于stack exchange,提问作者Xavier Bigand
相关产品推荐
相关产品推荐

