9
votes

Démontez sur X86_64 sur OSX10.6 (mais avec la syntaxe _intel_)

Je connais de otool -tv , mais je préférerais beaucoup utiliser la syntaxe Intel plutôt que AT & TS, principalement pour suivre facilement dans un livre et ne pas avoir à regarder Plus de milliers de % s et $ 's.

J'apprécierais également les conseils où je pourrais trouver le fichier de configuration gdb S.

Edit: J'ai oublié: je gère un processeur de 64 bits, mais je me demandais s'il serait possible de démonter également en 32 bits? Non seulement cela, mais l'OSX's's's's's's's's's's's> gdb 's est fonctionner différemment que la version standard gnu version

Merci beaucoup!

(En outre, si vous avez une idée où je pourrais trouver un petit désassembleur de C-> MIPS, ce serait très amusant de jouer avec. Mais pas nécessaire!)


1 commentaires

C -> MIPS n'est pas le désassemblage, c'est la compilation. C est une source "de haut niveau", pas le code de la machine. goodbolt.org (l'explorateur compilateur) a installé MIPS GCC et avec clang, vous pouvez utiliser -O3 - Cible MIPS ou -O3 -TARGET MIPS64 . Si Apple Clang sur MacOS est construit avec support, vous pourrez peut-être utiliser Clang -Target Mips -s -s sur votre bureau.


5 Réponses :


0
votes

Vous pouvez utiliser A2I pour traduire de AT & T en Syntaxe Intel: http: //membres.lycos .fr / placr / a2i.html


2 commentaires

Ce n'est pas tout à fait ce que je recherche - les syntaxes sont à la fois assez faciles à lire. C'est plus utile de rendre ma vie plus facile; L'utilisation d'A2I ajoute des étapes, je préfère ne pas prendre, pour une petite récompense. Merci quand même!


Ce lien est maintenant cassé.



1
votes

avec Objdump Vous pouvez démonter avec -D -M Intel , et apparemment -M peut être utilisé pour spécifier l'architecture.


4 commentaires

Je comprends que - malheureusement, objdump ne fonctionne pas / ne vient pas avec OSX.


Je pense que vous pouvez obtenir objdump sur OSX si vous installez GDB Binutils à l'aide de Macports ou de Homebrew. Je l'avais à un moment donné, mais j'ai préféré utiliser Otool car c'est en fait un outil OSX. Je suis cependant d'accord, j'aimerais que la syntaxe Intel à Otool elle-même.


Si vous installez des binutils à l'aide de Homebrew, le nom de l'exécutable est Gobjdump. C'est un peu floconneux et se bloque après avoir généré la sortie mais ... c'est mieux que rien!


J'ai une version d'Objdump sur Mac mais je ne pouvais pas le faire désassembler X64 Code



7
votes

Pour répondre à votre deuxième question, si le code a été compilé dans une graisse binaire avec 64 bits et 32 ​​bits, vous pouvez utiliser otool -arch i386 -tv pour démonter le 32- tranche de bits du binaire; Otool -arch x86_64 -TV vous donnera la partie 64 bits (sur Snowleopard, ceci est également le comportement par défaut si aucun -arch est passé).

Notez également que, tandis que Otool ne prend pas en charge la syntaxe Intel, GDB ( Détoutu de désassembly-arôme Intel ) et XCode (Préférences -> Débogage -> Style de démontage) Do.


2 commentaires

Merci! Je vais aller avec ça, bien que je sois toujours curieux de mips :) Dommage sur Otool ne pas supporter la syntaxe d'Intel.


Si c'est un obstacle pour vous, vous devez déposer un bogue qui demande que la fonctionnalité soit ajoutée (vous aurez besoin de configurer un compte ADC si vous n'en avez pas déjà): développeur.apple.com/bugreporter



1
votes

pour GDB, dans votre fichier .gdbinit, ajoutez:

Définir le désassemblage-saveur Intel

alors ce sera la syntaxe par défaut pour gdb.


0 commentaires

8
votes

(Je sais que c'est une ancienne question, mais je souhaite fournir une réponse mise à jour pour les personnes qui viennent ici via des moteurs de recherche).

sur les versions récentes de MacOS (je cours 10.14.5), un < Code> Objdump est disponible, qui est basé sur LLVM et est pas celui du projet GNU. Il offre une option (cachée) pour démonter à l'aide de Syntaxe Intel. Par exemple, / bin / echo peut être désassemblé comme suit: xxx


1 commentaires

C'est llvm-objdump . Sur mon système Linux, llvm-objdump est livré avec des packages Clang / LLVM et prend ces options. Manuel: llvm.org/docs/commandGuide/llvm-objdump.html