Как получить EprocessBaseAddress?

В языке 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, что может потребовать запуск программы с повышенными привилегиями. Важно также помнить, что работа с памятью процессов требует осторожности и может повлечь за собой нежелательные последствия.