В языке C++ получить EprocessBaseAddress (базовый адрес процесса) можно с помощью использования WinAPI функций, таких как GetProcessId
и OpenProcess
. Для этого необходимо выполнить следующие шаги:
1. Получить идентификатор процесса (PID) с помощью функции GetProcessId
, передав ей название процесса.
2. Открыть обработчик процесса с помощью функции OpenProcess
, передав ей права доступа и идентификатор процесса.
3. После открытия процесса, можно получить базовый адрес процесса (EprocessBaseAddress) с помощью функции VirtualQueryEx
, передав ей дескриптор процесса и адрес, по которому нужно получить информацию.
Ниже приведен пример кода на C++, демонстрирующий получение базового адреса процесса:
#include <iostream> #include <Windows.h> int main() { DWORD pid; char processName[] = "notepad.exe"; // Получаем идентификатор процесса по имени GetProcessId(processName, &pid); // Открываем процесс HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid); if (hProcess == NULL) { std::cerr << "Failed to open process!" << std::endl; return 1; } // Получаем информацию о памяти процесса MEMORY_BASIC_INFORMATION memInfo; VirtualQueryEx(hProcess, nullptr, &memInfo, sizeof(memInfo)); // Выводим базовый адрес процесса std::cout << "EprocessBaseAddress: 0x" << std::hex << reinterpret_cast<uintptr_t>(memInfo.AllocationBase) << std::endl; // Закрываем дескриптор процесса CloseHandle(hProcess); return 0; }
Обратите внимание, что для получения EprocessBaseAddress требуются права процесса PROCESS_ALL_ACCESS
, что может потребовать запуск программы с повышенными привилегиями. Важно также помнить, что работа с памятью процессов требует осторожности и может повлечь за собой нежелательные последствия.