You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用x86指令调用IAT中的函数?PE加载异常排查

PE文件IAT与重定位表问题排查

这是「如何生成重定位表」问题的后续:

  • 已手动构建包含导入表、ILT(导入查找表)、IAT(导入地址表)及Hint/Name表的.idata段,使用PE-bear工具检查时所有结构显示正常,.text段反汇编视图中PE-bear能正确识别call指令引用的函数名称:
    PE-bear反汇编视图

但实际运行二进制文件时出现异常:

  • 文件无法正常执行,x64dbg(含32位版本)无法识别call指令对应的函数,怀疑PE加载器未正确修正IAT,但无法定位原因
  • x64dbg中看不到"Hello World"字符串,推测是未填充.reloc段导致的

核心疑问:IAT是否也需要在.reloc段中添加重定位项?

调试相关截图:

  • 程序在第一条call指令处崩溃:
    x32dbg中的崩溃截图
  • 对比Visual Studio生成的同类可执行文件,x32dbg能正常识别call指令引用的函数名称:
    可正常运行的exe在x32dbg中的截图

附注:本人刚学习汇编,可能遗漏了CPU标志设置这类细节,当前call指令传入的是IAT的RVA。

内容的提问来源于stack exchange,提问作者Xavier Bigand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 08:48:21