Вопрос Правильно ли работает мой код?

Начинающий
Статус
Оффлайн
Регистрация
25 Ноя 2024
Сообщения
43
Реакции[?]
0
Поинты[?]
0
#include <stdio.h>
#include <windows.h>
#include <tlhelp32.h>

DWORD GetModuleBaseAddress(DWORD processID, const char* moduleName) {
DWORD baseAddress = 0;
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, processID);

if (hSnapshot != INVALID_HANDLE_VALUE) {
MODULEENTRY32 moduleEntry;
moduleEntry.dwSize = sizeof(MODULEENTRY32);

if (Module32First(hSnapshot, &moduleEntry)) {
do {
if (_stricmp(moduleEntry.szModule, moduleName) == 0) {
baseAddress = (DWORD)moduleEntry.modBaseAddr;
break;
}
} while (Module32Next(hSnapshot, &moduleEntry));
}
CloseHandle(hSnapshot);
}
return baseAddress;
}

int main() {
DWORD pid;
printf("Enter a PID: ");
scanf("%lu", &pid);

HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
if (hProcess == NULL) {
printf("Failed to open process. Error: %lu\n", GetLastError());
return 1;
}

DWORD baseclient = GetModuleBaseAddress(pid, "client.dll");
if (baseclient) {
printf("Base address of client.dll: 0x%X\n", baseclient);
} else {
printf("Failed to find client.dll in process %lu.\n", pid);
}

CloseHandle(hProcess);
return 0;
} Создается функция, которая получает базовый адрес модуля. Правильно ли он выводит базовый адрес client.dll? Base address of client.dll: 0xD17A0000
 
Сверху Снизу