0

我需要获取 .exe 的基地址地址,该地址每次启动时都有一个随机基地址。我试过这个,但它似乎不起作用:

int Base = (DWORD)GetModuleHandle("Test.exe");

怎么了?

4

2 回答 2

2

您似乎正在尝试获取另一个进程的基地址。可悲的是,GetModuleHandle仅适用于当前进程中的模块。为了实现您的目标,您需要使用 PSAPI 或CreateToolhelp32Snapshot提取另一个进程的模块列表。基地址在列表中。

于 2016-06-13T14:54:16.430 回答
1

我需要获取 .exe 的基地址/入口点地址,它每次启动时都有一个随机基地址。该程序使用 ASLR。

...

我将使用它来编辑正确进程中的某些内存块

为了将数据写入另一个进程,您需要使用WriteProcessMemory(),这需要您打开HANDLE正在写入的进程。

您可以HANDLE使用OpenProcess(), requestingPROCESS_VM_OPERATIONPROCESS_VM_WRITEpermissions 来获得它。OpenProcess()将进程 ID 作为输入,您可以从中获取:

请参阅进程枚举枚举所有进程

您在任何时候都不需要确定正在写入的进程的基地址。让系统为您跟踪该信息。您所需要的只是对HANDLE过程开放。

于 2016-06-13T17:42:26.597 回答