Polecenie OBJDUMP Linux

Polecenie OBJDUMP Linux

„OBJDUMP to narzędzie wiersza poleceń używana do wyświetlania informacji o obiekcie w systemach podobnych do UNIX. Polecenie, gdy jest używane, otrzymuje informacje o pliku obiektu, nawet jeśli nie masz kodu źródłowego. Dlatego może to być narzędzie do debugowania plików obiektowych, szczególnie podczas pracy z programami kompilatora."

Ten przewodnik obejmuje różne zastosowania polecenia OBJDUMP z przykładami. Sprawdź to.

Użycie polecenia objdump

Objdump ma 6 głównych celów:

  • Do debugowania pliku obiektu
  • Pobieranie nagłówków plików
  • Uzyskanie nazwy BFDName
  • Pobieranie nagłówka archiwum
  • Uzyskanie offsetów pliku
  • Demontaż pliku obiektowego

Jego podstawowa składnia to:

$ objdump

Istnieje wiele opcji do użycia z poleceniem objdump i możesz wyświetlić stronę pomocy, aby je wyświetlić.

$ objdump - -help

W tym artykule użyje /bin /echo jako nasz plik obiektu dla naszych przykładów. Możesz jednak użyć innych plików obiektów, takich jak programy C. Użycie jest nadal takie samo.

Praca z Objdumpem

Wyświetl nagłówki pliku obiektowego

Opcja -f, gdy jest używana z poleceniem OBJDUMP, pobiera wszystkie nagłówki plików powiązane z danym plikiem obiektu, jak pokazano poniżej. Pamiętaj, że używamy /bin /echo, który jest binarnym plikiem wykonywalnym dla polecenia echo jako naszego obiektu w tym przypadku.

$ objdump -f /bin /echo

Wynikowe wyjście wyświetlające nagłówki plików będzie:

Możesz zwrócić uwagę na format i nagłówki pliku obiektu z wyjścia.

Aby uzyskać nagłówki plików specyficzne dla obiektu

Jeśli chcesz wyświetlić określone nagłówki plików dla używanego pliku obiektu, użyj opcji -p.

$ objdump -p /bin /echo

Wyświetl zawartość nagłówka sekcji

Każdy plik ma inne nagłówki sekcji. Jeśli chcesz wyświetlić zawartość każdego z nagłówków sekcji, użyj opcji -H.

$ objdump -h /bin /echo

W takim przypadku wyjście brzmiało:

Ze wyjścia można zauważyć, że różne nagłówki sekcji są ponumerowane od 1, a każdy nagłówek sekcji ma swój rozmiar, VMA, LMA, Plik i ALGN.

Rozmiar: reprezentuje rozmiar załadowanej sekcji.

VMA: reprezentuje adres pamięci wirtualnej

Lma: reprezentuje adres pamięci logicznej

Spiłować: reprezentuje przesunięcie sekcji od początku pliku.

Algn: reprezentuje wyrównanie sekcji.

Inne szczegóły, takie jak alloc, dane, odczyt i treść, to różne flagi reprezentujące, jeśli sekcja jest czytnie lub jest załadowana.

Wyświetl informacje o wszystkich nagłówkach

Możesz także uzyskać wszystkie informacje o nagłówkach w pliku obiektu. Aby to zrobić, użyj opcji -x.

$ objdump -x /bin /echo

W tym przykładzie częściowe wyjście dla powyższego polecenia będzie:

Aby uzyskać zawartość asemblera sekcji wykonywalnej

Aby uzyskać zawartość asemblera sekcji wykonywalnej, użyj opcji -D.

$ objdump -d /bin /echo

W tym przykładzie częściowe wyjście to:

Wyjście jest podzielone na sekcje wykonywalne, a dla każdego z nich jest wyświetlana zawartość asemblera. Na przykład możesz zobaczyć sekcję „.init ”i jego odpowiednia zawartość asemblera poniżej przed przejściem do następnej sekcji wykonywalnej pliku obiektu.

Uzyskaj zawartość asemblera każdej sekcji

-D wyświetla zawartość asemblera tylko wykonywalnych sekcji. Jednak użyj opcji D, jeśli potrzebujesz zawartości dla wszystkich sekcji plików.

$ objdump -d /bin /echo

Aby uzyskać całą zawartość wszystkich sekcji

W tym celu użyj opcji -s

$ objdump -s /bin /echo

Wyjście dla wszystkich sekcji i ich zawartości będzie:

Wyświetl informacje o debugowaniu

Opcja -G wyświetla wszystkie dostępne informacje o debugowaniu pliku obiektu.

$ objdump -g /bin /echo

Wyświetl zawartość tabeli symboli

Jeśli plik obiektu ma tabelę symboli, możesz wyświetlić jego zawartość za pomocą opcji -T

$ objdump -t /bin /echo

Wniosek

Polecenie OBJDUMP jest przydatnym narzędziem dla programistów, którzy mają do czynienia z kompilatorami. Polecenie ma wiele zastosowań i omówiliśmy najczęstsze użycie przykładu. Możesz także sprawdzić jego stronę Man, aby uzyskać więcej informacji na temat tego, jak korzystać z narzędzia. Ponadto polecenie może stać się nieco przytłaczające. Więc ćwicz to bardziej. Wszystkiego najlepszego!