我正在用 x64dbg 分析一个 exe,但我没有看到地址 00401000

逆向工程 x64dbg
2021-06-28 09:19:04

每个 .exe 文件都从 00401000 开始还是我假设这样的事情是错误的。

编辑:这里的初学者。

当程序第一次加载到 x64dbg 时,它会立即进入 DLL,所以我看不到地址 00401000,但确实通过进入内存映射而存在。

问题:程序直接进入DLL,我怎样才能让x64dbg从00401000启动它,我尝试在00401000设置断点(软件和硬件),并在“入口断点”和“系统断点”等事件上中断

谢谢你的欢迎

1个回答

不是每个 exe 都不会从 0x401000 开始

图像库在标题中硬编码,并且在链接时可以使用 /entry 开关进行配置(ms 链接器)

操作系统可以并且将覆盖首选图像库

exe 文件中的所有其他地址都相对于硬编码的首选图像库

如果 os 覆盖它并将其映射到其他地方,则所有其他地址都将相对于新映射的地址

:\>dumpbin /headers cmd.exe  | findstr base
            1000 base of code
       140000000 image base (0000000140000000 to 0000000140064FFF)
                   Dynamic base

如您所见,此特定二进制文件的首选图像库是140000000, 并且代码库是相对于该地址的

所以如果二进制文件被加载到140000000 代码的基础将在

140000000 + 0x1000 == 0x140001000
如果它在200000000加载 ,代码的基础将在200000000 + 0x1000 == 0x200001000

等等