readelf-comme outil pour Mac OS X? [fermé]
Existe-t-il un outil pour lire les binaires Mac OS X qui imprimerait des informations sur les tables de relocation et les décalages de symboles similaires à ceci readelf
sortie?
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
Dans cet exemple, print
est une fonction chargée à partir d'une bibliothèque partagée (j'ai écrit) à l'exécution. readelf
est capable d'Afficher des informations sur son emplacement à l'intérieur du app
binaire.
5 réponses
en utilisant Macports:
- Installer macports.
- utiliser macports
port install binutils
gobjdump -p /path/to/app
en utilisant Homebrew:
- Installer Homebrew
brew update && brew install binutils
gobjdump -p /path/to/app
il y a, bien sûr, beaucoup d'autres options en ligne de commande. Notez que le port binutils prévient que son installation peut causer d'autres ports à ne pas construire. L'avoir autour de l'installation de port / regarder quelque chose / Désinstaller de port peut encore être pratique.
c'est assez étonnant qu'il n'y ait pas déjà d'outil natif pour faire ça.
avez-vous essayé ObjConv? http://agner.org/optimize/#objconv
cet utilitaire peut être utilisé pour convertir des fichiers d'objets entre les formats COFF/PE, OMF, ELF et Mach-O (utilisés par Mac OS) pour toutes les plateformes 32-bit et 64-bit x86. Peut modifier les noms de symboles dans les fichiers d'objets. Peut construire, Modifier et convertir des bibliothèques de fonctions à travers des plateformes. Peut vider des fichiers d'objets et des fichiers exécutables. Comprend également un très bon démonteur supportant les instructions SSE4, AVX, FMA et XOP définir.
Ps.: Le code source est inclus (GPL).
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install binutils
greadelf filepath
- installer homebrew.
- utilisez homebrew pour installer binutils
- le readelf dans binutils est appelé
greadelf
.