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

为何Ghidra与x64dbg中Test.exe的加载地址不一致?

为什么Ghidra与x64dbg中同一份Test.exe的地址显示不同?

这两个地址本质是虚拟地址(VA)的两种表现形式,核心差异来自Windows的地址空间布局随机化(ASLR)以及两款工具的默认加载逻辑:

  • Ghidra使用PE文件的默认基地址(ImageBase)
    你用VS编译的64位Release版Test.exe,PE头里默认指定的基地址是0x140000000。Ghidra加载二进制文件时,会直接按照这个预设基地址计算虚拟地址,所以你看到的0x140001290是「默认基地址 + 代码段偏移(0x1290)」的结果。

  • x64dbg显示的是ASLR启用后的实际加载地址
    Windows系统默认对64位EXE启用ASLR,每次启动程序时都会随机分配一个内存区域来加载PE文件,替换掉PE头里的默认基地址。你看到的0x00007FF777311290中,低12位的0x1290和Ghidra里的代码偏移完全一致,前面的0x00007FF777310000就是本次运行时随机分配的实际基地址。

你可以自行验证:在x64dbg中查看Test.exe模块的「ImageBase」,对比Ghidra里的默认基地址,两者的差值就是ASLR的随机偏移,而代码的相对偏移始终保持一致。

内容的提问来源于stack exchange,提问作者rajesh.khanna

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 05:19:57