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