Hook na funkcję API (NT)

0

Na forum sporo dyskutowano o zakładaniu hooków w systemie, większość tematów odnosiła się do obsługiwania komunikatów, ale w kilku postach wspomniano o zakładaniu hooków na funkcje API.
No właśnie - jak to zrobić? Jakie czary trzeba rzucić, żeby moja funkcja zastąpiła oryginalną funkcję API? Po przegrzebaniu helpa i googla wiem, że nie jest to prosta sprawa, i jak na razie jedyne co znalazłem to mazanie po tablicy eksportów dll, albo modyfikowanie kodu samego kernela.

Ma ktoś pomysł?

0

Były już dywagacje na ten temat kiedyś.

Trza wyszukać adres wybranej funkcji i nadpisać jej początkowe bajty skokiem do swojej wersji - jeśli istnieje potrzeba wywołania oryginalnej wersji to należy odtworzyć te początkowe bajty i skoczyć pod oryginalny adres.

Tylko myślę jak znów po tym skoku zmodyfikować kod na początku - może można zmienić adres powrotu na stosie aby po zakończeniu działania funkcji wylądować w naszym kodzie, który znów zmieni pierwsze bajty hookowanej funkcji i wróci tam, gdzie wskazywał oryginalny adres na stosie.

Tak to chyba powinno wyglądać.

0

Nie da się w pamięci nadpisać bezpośrednio funkcji systemowych, np. z kernel32.dll. Już próbowałem, nawet nie pomaga zmiana tej części pamięci przez funkcje VirtualProtect. Niektóre wirusy, w takim przypadku, po prostu kopiują całą biblioteke gdzieś do katalogu tymczasowego. Następnie ją nadpisują i modyfikują tak system, aby przy starcie systemu podmienić oryginał.

0

Conieco na temat api hooks jest w ksiazce Programming Applications For Microsoft Windows (Jeffrey Richter)

Jest o zmuszaniu aplikacji do zaladowania naszego modulu (dll injection) i o podmianie adresow importowanych funkcji

Kiedys nawet to robilem i dzialalo zdajesie (tylko nie pamietam czy mialem wtedy nt czy 98)

Mialem jeszcze jakis przyklad z msdn (w c albo cpp - niezle zamieszany)

To chyba wykorzystywalo specjalnie funcje do operacji na tablicy importow (eksportow??) dostepne w imagehlp.dll (chyba tylko windowsy nt albo nawet dopiero od 2k)

0

może pomoże - zawsze mogę oblukać wszystkie funkcje siedzące w tej bibliotece, aczkolwiek zajmie to trochę czasu.
dzięki za zainteresowanie.

0

Hej Łukasz :)

Mam pewien dokument ;P ale nie wiem czy o to ci chodzi :P
Technics of hooking API functions on Windows
Ma ok 50 KB, jeśli chcesz to mogę ci go przesłać . (jest po angielsku)

// no jasne, że chcę (chcemy) - ŁF

0

Ja tez bym prosil jesli mozna... na [email protected]

0

jayjay> wrzuć to na 4p, bo zaraz zrobi się cała lista postów w stylu: "mi też [mail]"
[soczek]

0

www.smola.pac.pl/tools.htm <--- api hooker, co prawda do monitorowania wywolan, ale moze sie przydac ;)

pzdr,

y.

0

imagehlp.dll to zbior funkcji ulatwiajacej na operacjach zplikami exe typ PE

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