Цитата:
Сообщение от TOM_RUS
А как же ASLR? Там рандомный базовый адрес... Или тут автоматом это учитывается?
|
нет, ASLR тут не учитывается. Пока я отключил эту фигню в реестре и не парюсь.
Надо поискать как читать адрес с учетом этой ASLR.
Добавлено через 58 минут
Вот порыл в инете, пишут что BaseAddr определяется так :
Код:
#include <Windows.h>
#include <TlHelp32.h>
int _tmain(int argc, _TCHAR* argv[])
{
MODULEENTRY32 me32;
me32.dwSize = sizeof(MODULEENTRY32);
DWORD pid = GetCurrentProcessId(); // тут подставить ИД процесса вов
HANDLE h = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pid);
if (h != INVALID_HANDLE_VALUE)
{
if (Module32First(h, &me32))
{
// по идее нужно сделать проверку на имя модуля что бы me32.szModule было равно wow.exe
// но обычно первым идет как раз сам основной экзешник
DWORD baseaddr = (DWORD)me32.modBaseAddr;
printf("0x%08X\n", baseaddr);
}
}
return 0;
}
Проверить не могу, на работе Windows XP. Хотя на XP выдает положенные 0x00400000