我正在寻找一种方法/函数,可用于获取"program.exe"+03262C08 -> B4895A0
. 该地址来自作弊引擎,并且已使用指针扫描仪找到基地址。在指针扫描仪中,我可以按show module list
,并且有从 addressprogram.exe
开始的地址00400000 program.exe
。扫描指针扫描器的地址09c3000
(我想在基地址+许多偏移量[最终地址]之后到达的地址)。此地址是某些对象的基础,但我无法到达该地址。我只能获取 exe 文件的基地址00400000
。我正在尝试从指针03262C08
(和其他)添加偏移量,但我仍然无法到达该地址。我不能使用功能FindWindow()
。因为程序的名称会发生变化,坚持使用它是多余的。我在用着OpenProcess(), EnumProcessModulesEx(), GetModuleFileNameEx()
功能。我也尝试过其他人,GetModuleInformation(),...
结果相同。GetModuleHandle()
以结果结束0x126 [ERROR_MOD_NOT_FOUND]
。我正在使用 64 位操作系统,并且正在尝试获取另一个进程的基地址。我可以看到本地机器上的所有进程和“程序”进程的模块。
if (!K32EnumProcesses(aProcesses, sizeof(aProcesses), &cbNeeded)) {
return 1;
}
cProcesses = cbNeeded / sizeof(DWORD);
cout << setw(15) << left << "Process ID" << setw(10) << left << "Modules";
cout << setw(30) << left << "Process Name" << endl;
for (i = 0; i < cProcesses; i++) {
if (aProcesses[i] != 0) {
ProcessView::GetProccesses(aProcesses[i], modules, sizeModules, &cModules, &hCurrProcess);
if (hCurrProcess != NULL) {
cout << endl << setw(15) << left << aProcesses[i] << setw(10) << left << cModules;
ProcessView::PrintModuleName(hCurrProcess, modules);
CloseHandle(hCurrProcess);
}
}
}
ProcessView::GetProccesses(cProcesses, modules, sizeModules, &cModules, &hCurrProcess);
system("cls");
ProcessView::PrintModuleNameAll(hCurrProcess, modules, cModules);
我在我创建的 ProcessView.h 文件的示例中添加了函数定义。
static void GetProccesses(_In_ DWORD processID, _Inout_ HMODULE ahModules[], _In_ int sizeModules, _Out_ DWORD* cModules, _Out_ HANDLE* hProcess);
static void PrintModuleName(_In_ HANDLE processID, _In_ HMODULE* modules);
static void PrintModuleNameAll(_In_ HANDLE hProcess, _In_ HMODULE * modules, _In_ DWORD cModules);