我正在寻找一个可以用来获取基地址的方法/函数"program.exe"+03262C08 -> B4895A0
。该地址来自作弊引擎,基地址已通过指针扫描器找到。在指针扫描仪中我可以按show module list
并且有地址program.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);