Chociaż Ghidra oferuje wiele funkcji i funkcjonalności, dla uproszczenia skupimy się tylko na najbardziej podstawowych i korzystnych funkcjach.
Okno projektu
Okno projektu jest głównym oknem dostępnym po załadowaniu Ghidry; zapewnia funkcje zarządzania projektami, pliki docelowe aktywnego projektu, skrzynki narzędziowe i ogólną definicję obszaru roboczego. Stwórzmy nasz projekt i rozpocznijmy pracę z wcześniej skompilowanymi plikami docelowymi. Uruchom Ghidrę, jeśli jeszcze tego nie zrobiłeś, a następnie wykonaj następujące kroki:
- Utwórz nowy projekt klikając Plik | Nowy lub naciskając CTRL-N. Ustawimy ten projekt jako prywatny (czyli projekt niewspółdzielony), a także ustalimy nazwę projektu i folder, w którym będzie się on znajdować.
- Dołącz ucznia i pliki binarne z poprawkami do projektu, klikając Plik | Importuj lub naciskając I dla każdego z nich. Spowoduje to wykrycie formatu i języka pliku binarnego (w tym przypadku ELF skompilowany z x86:LE:64:default:gcc), jak pokazano poniżej.
- Kliknij przycisk OK. Zostanie wyświetlone podsumowanie wyników importu z metadanymi pliku i właściwościami nagłówka.
- Kliknij dwukrotnie plik docelowy uczniów, aby uruchomić przeglądarkę kodów i rozpocząć analizę.
Analiza
Gdy tylko Ghidra załaduje program, sugeruje analizę programu, jeśli nie zostało to już wcześniej zrobione:
Analizator wykonuje wiele zadań, ale najważniejsze z nich zostały pokazane tutaj i opisane poniżej:
- Analizator funkcji Przypisuje adresy i nazwy funkcjom na podstawie ich symboli lub poprzez wykrywanie prologów i epilogów funkcji podczas deasemblacji kodu.
- Analizator stosu Wnioskuje o rozmiarach zmiennych stosu i odniesieniach w oparciu o operacje na podstawie stosu i wskaźniku na początku funkcji.
- Analizator argumentów Przypisuje i rozwiązuje odniesienia do adresów i symboli w oparciu o operandy skalarne.
- Analizator odwołań do danych Rozpoznaje adresy i odniesienia do wartości danych i oczywistych typów danych w oparciu o lokalizację sekcji pamięci i argumenty w kodzie.
Analiza | Podmenu One-Shot umożliwia uruchomienie wielu lub wszystkich różnych zadań analitycznych na wybranym bloku kodu.