Możemy używać objdump jako deasemblera wiersza poleceń, a także do uzyskiwania ważnych informacji o plikach wykonywalnych i obiektach. Zdobądźmy trochę informacji na temat pliku binarnego hello.
Uzyskiwanie tabeli globalnych przesunięć (GOT) i tabeli powiązań procedur (PLT)
Analizując pozbawiony plików binarnych, możesz użyć objdump, aby odwrócić adres pamięci interesującej funkcji. Za pomocą opcji -R możesz wyświetlić listę funkcji w GOT-u:
Teraz użyjmy objdump do zlokalizowania adresu, który zostanie wywołany w PLT, aby dostać się do funkcji puts():
Oto kilka punktów, na które warto zwrócić uwagę:
- -M intel informuje objdump, aby używał trybu składni Intel zamiast domyślnego (AT&T).
- -d jest skrótem od –disassemble.
- -j .plt określa sekcję, którą chcemy wyświetlić (PLT).
Teraz użyjemy opcji -j .text, aby znaleźć wywołanie puts w analizowanym programie:
Znajdowanie odniesień do ciągów stałych
W niektórych sytuacjach może być konieczne znalezienie odniesień do ciągów znaków w pozbawionych plików binarnych, aby przyspieszyć proces debugowania, lub znaleźć magiczne gadżety w obiekcie. Odniesienia do ciągów znaków możemy znaleźć w dwóch krokach. Pierwszym krokiem jest
gdzie -tx (-t oznacza podstawę, x oznacza wartość szesnastkową) wypisuje przesunięcie w pliku na początku każdego łańcucha. Drugi krok to