此帖子(Find an instruction in an executable file, given its address in a running process?)包含有关如何根据正在运行的进程的内存地址计算可执行文件中的地址的详细说明。
如果要将公式应用于x64可执行文件,如何确定要使用的基址?
对于x86,它是0x400000。我的假设是,这来自可选PE标头的IMAGE_BASE字段。但是,此字段包含x64的值0x140000000。实际上,x64二进制文件中使用的地址比x86二进制文件中使用的地址小得多。
我尝试确定基地址而不实际运行exe。
如果该exe文件未启用地址空间布局随机化,则该exe文件将始终被加载到首选图像库中,这是由可选标题中的ImageBase
定义的地址。
这对动态链接库而言并非如此。它们有一个ImageBase
,但是如果已经占据该位置,则它将在运行时动态加载到其他位置。
因此,如果您正在谈论启用了ASLR或DLL的进程,则您所要求的内容是不可能的。