Readelf-ähnliches Tool für Mac OS X? [closed]

Lesezeit: 4 Minuten

Benutzeravatar von karlphillip
Karl Philipp

Gibt es ein Tool zum Lesen von Mac OS X-Binärdateien, das ähnliche Informationen über Verschiebungstabellen und Symbol-Offsets ausdruckt readelf Ausgang?

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

In diesem Beispiel print ist eine Funktion, die zur Laufzeit aus einer gemeinsam genutzten Bibliothek (ich schrieb) geladen wird. readelf ist in der Lage, Informationen über seinen Standort innerhalb des anzuzeigen app binär.

  • Möchten nm Mache den Trick?

    – zneak

    20. Juli 2010 um 2:56 Uhr

  • Es werden nicht genügend Informationen gedruckt.

    – Karl Philipp

    20. Juli 2010 um 3:10 Uhr

Benutzeravatar von cbehanna
cbehanna

Verwenden Macports:

  1. macports installieren.
  2. Verwenden von Macports port install binutils
  3. gobjdump -p /path/to/app

Verwenden Hausgemacht:

  1. Homebrew installieren
  2. Tun brew update && brew install binutils
  3. /usr/local/path/to/gobjdump -p /path/to/app # oder folgen Sie den Anweisungen, um es zu Ihrem PATH hinzuzufügen

Es gibt natürlich viele andere Befehlszeilenoptionen. Beachten Sie, dass der binutils-Port darauf hinweist, dass die Installation dazu führen kann, dass andere Ports nicht erstellt werden können. Es kann immer noch praktisch sein, es in der Nähe zu haben, um den Port zu installieren / sich etwas anzusehen / den Port zu deinstallieren.

Es ist ziemlich erstaunlich, dass es nicht bereits ein natives Tool gibt, um dies zu tun.

  • Wenn Sie Homebrew verwenden, können Sie dies über “brew install binutils” installieren.

    – louielouie

    23. Mai 2013 um 21:24 Uhr

  • Für Homebrew-Benutzer, wie @louielouie erwähnt, brew install binutils dann wird allen Werkzeugen ein vorangestellt gdh greadelf. Sehen github.com/Homebrew/homebrew/blob/master/Library/Formula/…

    – achw

    9. September 2014 um 9:49 Uhr


  • Ich bekomme eine Nachricht: gobjdump: Matching formats: elf32-littlearm elf32-littlearm-symbian elf32-littlearm-vxworks

    – IgorGanapolsky

    11. Mai 2016 um 22:01 Uhr

  • @IgorGanapolsky Sie können greadelf -Ws /path/to/your/so/files verwenden

    – ck1910

    12. April 2017 um 7:55 Uhr

otool -l test.o

  • Nein, das bringt es auch nicht.

    – Karl Philipp

    22. Juli 2010 um 23:42 Uhr

  • Sie können dies mit otool tun, Sie müssen nur zusätzliche Optionen übergeben. man otool für Details.

    – Chris Hanson

    23. Juli 2010 um 19:59 Uhr

  • otool -Sv libtest.a ist schöner, bzw otool -STMRIHGv <path/to/library> für jede Art von Bibliothek (*.a, *.so, *.dylib). otool ist erhältlich unter /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/otool nachdem Xcode installiert wurde.

    – Siu Ching Pong -Asuka Kenji-

    21. März 2016 um 15:12 Uhr

  • Leider muss ich das mit machen .so Dateien.

    – IgorGanapolsky

    11. Mai 2016 um 22:02 Uhr

Benutzeravatar von Jichao
Jichao

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install binutils
greadelf filepath
  1. Homebrew installieren.
  2. Verwenden Sie Homebrew, um Binutils zu installieren
  3. das readelf in binutils wird aufgerufen greadelf.

  • Greelf benötigt eine Flagge

    – IgorGanapolsky

    11. Mai 2016 um 22:03 Uhr

  • Verwenden greadelf -a <binary>das -a Flag steht für alle Optionen, die alles ausgeben

    – Allison

    5. Mai 2018 um 1:07 Uhr

Benutzeravatar von Peter Hosey
Peter Hosey

Du könntest es versuchen dwarfdump.

⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣

Hast du ObjConv ausprobiert? http://agner.org/optimize/#objconv

Dieses Dienstprogramm kann zum Konvertieren von Objektdateien zwischen den Formaten COFF/PE, OMF, ELF und Mach-O (von Mac OS verwendet) für alle 32-Bit- und 64-Bit-x86-Plattformen verwendet werden. Kann Symbolnamen in Objektdateien ändern. Kann Funktionsbibliotheken plattformübergreifend erstellen, modifizieren und konvertieren. Kann Objektdateien und ausführbare Dateien sichern. Enthält auch einen sehr guten Disassembler, der die Befehlssätze SSE4, AVX, FMA und XOP unterstützt.

Ps.: Der Quellcode ist dabei (GPL).

1415840cookie-checkReadelf-ähnliches Tool für Mac OS X? [closed]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy