ReverseCraft
Info
Seria ReverseCraft niestety nie będzie już kontynuowana (wyjaśnienie), ale nagrywam/publikuje teraz inne serie videotutoriali (również o sprawach niskopoziomowych, w tym np. kurs assembly) w trochę innej formie. Są dostępne na moim kanale na Youtube. Zachęcam do rzucenia okiem :)

Wszystkie epsy ReverseCraft są również dostępne via Youtube: http://www.youtube.com/user/GynvaelColdwind (playlisty ReverseCraft (PL) oraz ReverseCraft Asm (PL).
Video Details
ReverseCraft #6 - OEP i zrzuty pamięci


Czas trwania:
36 minut (opublikowano 2009-10-28)

Credits:
Autor: Gynvael Coldwind
Intro: Sebastian "Xa" Rosik (grafika) i Samlis Coldwind (dźwięk)
Dodatkowe konsultacje: Icewall

Opis:
Odcinek szósty, w którym poruszam problematykę lokalizacji OEP (oryginalnego punktu wejścia) oraz omawiam kolejne narzędzia do wykonywania zrzutów pamięci.

Linki do video:

Materiały:

Informacje uzupełniające:
Istnieje jeszcze jedna ciekawa metoda (thx Bartek), o której nie powiedziałem w odcinku, a o której należy wspomnieć. Nie przedłużając, metoda polega na wykonaniu zrzutu obrazu PE nie szukając OEP (czyli w dowolnym momencie po rozpakowaniu, np. przy okazji jakiegoś breakpointu, lub przed zakończeniem procesu), a następnie przeskanowaniu dump'a na występowanie sygnatury (za równo jako binarnego wzorca, jak i charakterystycznego kodu czy sekwencji mnemoników) jakiegoś popularnego kompilatora (Delphi / Microsoft Visual C++ / MinGW GCC / etc). Gdy znaleźliśmy prolog, wystarczy odpalić aplikację jeszcze raz, ustawić hardware breakpoint na znaleziony OEP (oczywiście pierwsza instrukcja prologu to OEP), ponownie wykonać zrzut i jesteśmy w domu. Jak można się domyślić, metoda nie zadziała jeśli aplikacja skompilowana została z jakimś niestandardowym prologiem lub prolog uległ zmianie. W takim wypadku pozostaje jeszcze możliwość zbudowania drzewa cross-refów, i poszukanie funkcji leżącej na samej górze drzewa, czyli właśnie prologa.
Zostało jeszcze jedno pytanie: skąd wziąć sygnatury? Z tego co pamiętam, IDA Pro w wersji komercyjnej zawiera sporo sygnatur m.in. prologów, i prawdopodobnie automatycznie znajdzie prolog (kwestia tylko jak ów prolog nazwie - zachęcam do testów). Ewentualnie zachęcam do stworzenia własnych narzędzi wyszukujących sygnatury i stworzenia własnej kolekcji sygnatur - na pewno będzie to pouczające i przydatne doświadczenie. Pamiętajcie jednak ze różne przełączniki zastosowane podczas kompilacji mogą powodować tworzenie się różnych prologów.

Materiały o których wspominam w odcinku:

Użyte narzędzia:
Video Tutorials RSS
ReverseCraft:
Legal stuff
ReverseCraft project (c) 2009 gynvael.coldwind//vx
Video tutoriale dostępne są na licencji Creative Commons BY-NC-ND

cat