[?] Inline Hooki: stage 475320 (pobieranie adresu funkcji)

0

(Już denerwujące jest to pytanie się o wszystko...)

Witam wszystkich. Wygląda na to że po raz 4753200 (czy może 4753201?) mam problem z założeniem hooka.

Otóż miałem wątpliwości czy na pewno wszystko co do hooków (IMHO całkiem ciekawy i rozwijający sposób na naukę działania niektórych rzeczy) umiem/rozumiem, więc postanowiłem zrobić jeszcze raz, tym razem na coś bardziej skomplikowanego - padło na funkcję w programie odbierającą i przetwarzającą komunikaty Windows (mniejsza że na początku chciałem tylko je podglądać bez zdejmowania z "kolejki" - teraz liczy się tylko rozwiązanie ;) ).

Problem polega na tym że ta funkcja nie jest (oczywiście) jako eksport, więc pobrać jej adresu nijak się nie... wróć, tzn nie potrafię.
Podszedłem do tego "na chłopski rozum" i znalazłem po prostu odpowiedni adres w disasemblerze i skonwertowałem go na FileOffset (chyba taka forma jest potrzebna? Zresztą próbowałem z wszystkimi 4 sposobami liczenia adresu).

No i problem polega na tym że to nie działa :|
Nie żeby się coś wywalało - po prostu wszystko działa jak wcześniej, nic się nie zmienia. (Jako weryfikację "zmiany" stosuję MessageBoxa.)

Mógłby mnie ktoś oświecić co robię źle? Albo gdzie popełniam błąd w rozumowaniu?

edit: zapomniałem - [soczek]

0

FileOffset == pozycja fizyczna, pamiętaj że sekcje mogą (i zwykle mają) inne adresy i rozmiary wirtualne. Potrzebujesz virtual address, czyli VA - ten adres co pokazuje disassembler minus znajdujący się w nagłówku image base (co oczywiście można odczytać z disasma) plus adres modułu w pamięci (nie musi być równy imagebase z pliku - relokacje). Nic się nie dzieje bo pewnie wstawiłeś hooka nie w kod a w niezbyt używaną część nagłówka pliku albo ew. w kod, którego nic nie woła. Więcej nie powiem bez pomocy wróżki i jakiejś zachęty...

1 użytkowników online, w tym zalogowanych: 0, gości: 1