Chcę uzyskać dostęp do określonego adresu procesu. Ale do tego potrzebuję najpierw uzyskać adres bazowy procesu. Używam narzędzia, aby zobaczyć, czy naprawdę to robię dobrze. Narzędzie pokazuje, że potrzebuję: "app.exe"+0x011F9B08 = 0x119F8300
Uzyskaj adres podstawowy procesu
Myślałem, że mogę uzyskać adres bazowy procesu przez OpenProcess()
, ale to daje mi: 0x0000005c
w wyniku. Nie sądzę, że to prawda? Co najmniej, nie tego potrzebuję.
myślę adres bazowy jest mi potrzebne: 0x119F8300 - 0x011F9B08 = 0x107FE7F8 <-- base?
To jest mój kod:
hWindow = FindWindow(NULL, lpWindowName);
if(hWindow)
{
GetWindowThreadProcessId(hWindow, &dwProcId);
if(dwProcId != 0)
{
// hProcHandle -> 0x0000005c
hProcHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcId);
}
else
{
return 0;
}
}
Jak mogę uzyskać adresu bazowego procesu, że już otwarty?
Co dokładnie masz na myśli przez "podstawowy adres procesu"? – NPE
Być może musisz się nauczyć o [pamięci wirtualnej] (http://en.wikipedia.org/wiki/Virtual_memory) –
Czy próbujesz odczytać pamięć _annego_ działającego procesu i musisz znać adres podstawowy, pod którym obraz był zmapowane w wirtualnej przestrzeni adresowej tego procesu? –