Autor Wątek: WINAPI Dostęp do adresów 32 bitowych z 64 bitowej aplikacji  (Przeczytany 1575 razy)

Offline supron

  • Użytkownik

# Grudzień 01, 2014, 13:40:59
Witam.

Piszę program monitorujący działanie drugiej aplikacji poprzez wczepianie się api windowsowe i odczyt argumentów/zwrotów (robię proste hooki w assemblerze). Ten mechanizm działa bardzo dobrze gdy program "monitor" i program monitorowany, są 32 bitowe. Problem pojawia się gdy z poziomu 64 bitowego monitora chcę znaleźć adresy w aplikacji 32 bitowej. Gdy obie aplikacje były 32 bitowe, adresy kernel32.dll pokrywały się więc wystarczył GetProcAddress w monitorze by zawsze pasowało do aplikacji monitorowanej. Metoda "brudna" i kompletnie bezużyteczna w 64 bitach. Dlatego zastanawiam się czy istnieje jakieś API windowsowe do tego typu zadań.

3 dni siedzenia na MSDNie pozwoliły mi wczytać listę modułów 32 bitowych z 32 bitowego procesu, więc wiem gdzie znajdują się systemowe dllki w pamięci. Nie wiem natomiast jak na tej podstawie łatwo odczytać adresy eksportowanych funkcji. Do głowy przyszła mi pewna metoda, by wczytać przez ReadProcessMemory cały nagłówek z pamięci i zdekodować export table, ale czy to dobre podejście i czy da dobre wyniki? Poza tym wolałbym coś prostszego i bardziej wysokopoziomowego.

Pozdrawiam.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych