Czas trwania:
67 minut (opublikowano 2009-12-05)
Credits:
Autor: Gynvael Coldwind
Intro: Sebastian "Xa" Rosik (grafika) i Samlis Coldwind (dźwięk)
Opis:
Siódmy odcinek ReverseCraft, w którym prezentuje połączone techniki DLL injection oraz inline hooks.
Linki do video:
- UW-Team.org (flash player/download)
- Vimeo (flash player/download)
Materiały:
- Slajdy - slajdy użyte w videoarcie
- Lista ćwiczeń - lista ćwiczeń dla osób zainteresowanych; rozwiązania można wysyłać mi na e-mail (potem zrobię do tego odpowiedni panelik), w celu weryfikacji/pochwalenia się/innym (e-mail: michael MAŁPA hispasec KROPKA com); gdybym nie wysłał potwierdzenia odbioru w ciągu 5 dni, proszę o przypomnienie / kontakt w celu sprawdzenia co się stało
- Kod źrodłowy i binarki - kod źródłowy oraz binarki stworzone podczas tego odcinku
Informacje uzupełniające:
Przy testowaniu hooka należy pamiętać, że trzeba sprawdzić jak wygląda początek funkcji msvcrt.puts na swoim systemie, i następnie poprawić kod przywracający środowisko (tj. te dwa pushe nadpisane skokiem) w hook_wrapper w hook.c.
Kompilacja:
Inne często używane trampoliny:
Materiały o których wspominam:
Warto przeczytać:
Kompilacja:
g++ inject.cpp -o inject.exe
gcc hook.c -c -masm=intel
dllwrap hook.o -o hook.dllInne często używane trampoliny:
push ADRES; ret
call ADRES_RELATYWNY
jmp ADRES_RELATYWNY
mov eax, ADRES; jmp eax
jmp short ADRES_TRAMPOLINY; ... (dwustopniowa trampolina, gdy możemy użyć 2 bajty, ale w pobliży jest trochę miejsca na resztę kodu)Materiały o których wspominam:
- The Complete Pentium Instruction Set Table - podręczna lista instrukcji i opcode'ów procesora x86 (aka opcodes.txt lub pentium.txt)
- Funkcje typu "naked" w gcc/g++ - post na moim blogu o tworzeniu funkcji bez prologu/epilogu w gcc/g++
Warto przeczytać:
- One safe hook handler - E8 Method by David Reguera García
Użyte narzędzia:
- MinGW GCC - kompilator C/C++ (gcc/g++), linker do tworzenia DLLek (dllwrap)
- OllyDbg 1.10 - trochę już podstarzały, ale nadal dający radę, darmowy debugger pod Windowsa
- Immunity Debugger - tego co prawda nie używałem, ale jest to godny polecenia debugger oparty o silnik OllyDbg
- IDA Pro - najlepszy istniejący interaktywny disassembler (również w wersji freeware, niestety jest to starsza edycja)
- Total Commander - świetny i bardzo wygodny menadżer plików pod systemy z rodziny Windows

