我在main.cpp的“Visual studio community edition”中编写了这段代码,并构建了一个名为Test.exe
的发布版本
#include <iostream>
int main()
{
int i = 0;
i++;
std::string s;
std::cout << "Hello World" << i << std::endl;
std::cout << "Hello World1" << std::endl;
std::cin >> s;
std::cout << s << std::endl;
}
当我在Ghidra中加载0x140001290
时,但当在x64dbg中加载相同的二进制时,我看到地址0x00007FF777311290
,见图片
这里是线程(只是以防万一)
更新:添加了显示链接到main.cpp的文件:
下面是代码行:
**问题:**为什么Ghidra中的这些地址与x64dbg中的不同?
1条答案
按热度按时间gpfsuwkq1#
由于ASLR,程序将被加载到随机基地址。
以下是一些技巧来克服x64 dbg和Ghidra显示不同地址的问题:
/DYNAMICBASE:NO
链接器选项禁用ASLROptionalHdr.DllCharacteristics
(PE Bear showing OptionalHdr.DllCharacteristics having IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE attribute)中删除IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE
(0x 40)属性