readelf-podobne narzędzie dla Mac OS X? [zamknięte]

Czy istnieje narzędzie do odczytu plików binarnych Mac OS X, które wyświetla informacje o tablicach relokacji i przesunięciach symboli podobnych do tego wyjścia readelf?

readelf -r app

Relocation section '.rel.dyn' at offset 0x5ec contains 2 entries:
 Offset     Info    Type            Sym.Value  Sym. Name
08049d58  00001706 R_386_GLOB_DAT    00000000   __gmon_start__
08049d60  00000305 R_386_COPY        08049d60   _ZSt4cout

Relocation section '.rel.plt' at offset 0x5fc contains 13 entries:
 Offset     Info    Type            Sym.Value  Sym. Name
08049d24  00000107 R_386_JUMP_SLOT   0804868c   print
08049d28  00000207 R_386_JUMP_SLOT   0804869c   _ZNSt8ios_base4InitC1E
08049d2c  00000507 R_386_JUMP_SLOT   080486ac   _ZStlsISt11char_traits
08049d30  00000607 R_386_JUMP_SLOT   080486bc   _ZNSolsEPFRSoS_E
08049d34  00000707 R_386_JUMP_SLOT   08048664   _init
08049d38  00000807 R_386_JUMP_SLOT   080486dc   sleep
08049d3c  00000907 R_386_JUMP_SLOT   080486ec   _ZNKSsixEj
08049d40  00000b07 R_386_JUMP_SLOT   080486fc   _ZNKSs4sizeEv
08049d44  00000c07 R_386_JUMP_SLOT   0804870c   __libc_start_main
08049d48  00000d07 R_386_JUMP_SLOT   08048ae4   _fini
08049d4c  00001307 R_386_JUMP_SLOT   0804872c   _ZSt4endlIcSt11char_tr
08049d50  00001507 R_386_JUMP_SLOT   0804873c   __gxx_personality_v0
08049d54  00001607 R_386_JUMP_SLOT   0804874c   _ZNSt8ios_base4InitD1E

W tym przykładzie {[2] } jest funkcją ładowaną z biblioteki współdzielonej (którą napisałem) w czasie wykonywania. readelf jest w stanie wyświetlić informacje o swojej lokalizacji wewnątrz app binarnego.

Author: AstroCB, 2010-07-20

5 answers

Using Macports:

  1. zainstaluj macports .
  2. Using macports port install binutils
  3. gobjdump -p /path/to/app

Using Homebrew :

  1. Install Homebrew
  2. Do brew update && brew install binutils
  3. gobjdump -p /path/to/app

Istnieje oczywiście wiele innych opcji wiersza poleceń. Zauważ, że port binutils ostrzega, że jego instalacja może spowodować, że inne porty nie zostaną zbudowane. Mając go wokół portu zainstalować / spojrzeć na coś / Port deinstalacji może nadal się przydaj.

To dość niesamowite, że nie ma jeszcze jakiegoś natywnego narzędzia do tego.

 68
Author: cbehanna,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-04 09:20:58

Otool-l test.o

 15
Author: ergosys,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-20 03:13:44

Możesz spróbować dwarfdump.

⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣

 6
Author: Peter Hosey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-12 18:15:57

Próbowałeś ObjConv? http://agner.org/optimize/#objconv

To narzędzie może być używane do konwersji plików obiektowych między formatami COFF/PE, OMF, ELF i Mach-O (używanymi przez Mac OS) dla wszystkich 32-bitowych i 64-bitowych platform x86. Może modyfikować nazwy symboli w plikach obiektowych. Może tworzyć, modyfikować i konwertować biblioteki funkcji na różnych platformach. Może zrzucać pliki obiektowe i pliki wykonywalne. Zawiera również bardzo dobry disassembler obsługujący instrukcje SSE4, AVX, FMA i XOP zestawy.

Ps.: Dołączony jest kod źródłowy (GPL).

 5
Author: carlfilips,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-27 00:01:53
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install binutils
greadelf filepath
  1. Zainstaluj homebrew.
  2. Użyj homebrew aby zainstalować binutils
  3. odczyt w binutils nazywa się greadelf.
 4
Author: Jichao,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-19 09:44:23