我需要获取 .exe 的基地址地址,该地址每次启动时都有一个随机基地址。我试过这个,但它似乎不起作用:
int Base = (DWORD)GetModuleHandle("Test.exe");
怎么了?
您似乎正在尝试获取另一个进程的基地址。可悲的是,GetModuleHandle仅适用于当前进程中的模块。为了实现您的目标,您需要使用 PSAPI 或CreateToolhelp32Snapshot提取另一个进程的模块列表。基地址在列表中。
我需要获取 .exe 的基地址/入口点地址,它每次启动时都有一个随机基地址。该程序使用 ASLR。
...
我将使用它来编辑正确进程中的某些内存块
为了将数据写入另一个进程,您需要使用WriteProcessMemory(),这需要您打开HANDLE正在写入的进程。
您可以HANDLE使用OpenProcess(), requestingPROCESS_VM_OPERATION和PROCESS_VM_WRITEpermissions 来获得它。OpenProcess()将进程 ID 作为输入,您可以从中获取:
CreateToolhelp32Snapshot()// Process32First()_Process32Next()EnumProcesses().WTSEnumerateProcesses()您在任何时候都不需要确定正在写入的进程的基地址。让系统为您跟踪该信息。您所需要的只是对HANDLE过程开放。