7
votes

Comment désassembler le code MIPS cru?

De même à Comment démonter le code RAW X86? , mais puis pour l'architecture MIPS: Comment démonter brut Code MIPS avec objdump code>? Je veux vérifier les instructions d'une image Vmlinux, mais je dois donc le faire:

$ file x.o
x.o: ELF 32-bit LSB relocatable, MIPS, MIPS-I version 1 (SYSV), with unknown capability 0xf41 = 0x756e6700, with unknown capability 0x70100 = 0x1040000, not stripped
$ mipsel-linux-gnu-objdump -p x.o

x.o:     file format elf32-tradlittlemips
private flags = 1006: [abi=O32] [mips1] [not 32bitmode] [PIC] [CPIC]


1 commentaires

Si vous n'insistez pas à l'aide d'Objdump, voir aussi MIPS Désassembler - Exchange de pile d'ingénierie inverse


3 Réponses :


0
votes

??? Quel est le problème avec juste: xxx

est le problème que -d diassemble toutes les sections, code ou non? Utilisez -d alors. Ou -s pour afficher l'assemblage entrelacé avec la source (implique -d ).

ou quelle que soit l'obtention du code de montage de GCC: xxx


2 commentaires

vmlinux ne contient aucune section, il est uniquement contenant des instructions. Le problème est que je n'ai pas les outils GCC et ObjCopy installé uniquement dans une machine virtuelle. Puisqu'il y avait un moyen d'obtenir objdump sauter le chemin GCC / Objcopy en X86, je me demandais si c'est possible sur MIPS aussi?


Je vois; Votre fichier d'objet x.o est juste un mannequin et vous tirez dans des sections de vmlinux . C'est étrange; J'ai toujours été capable de simplement exécuter objdump sur vmlinux , pour diverses architectures: MIPS, bras, ... Qu'est-ce que ce Mipsel-Linux-gnu- Objdump Spit Out si vous venez d'appeler cela avec -D vmlinux , sans ces autres arguments? Aussi: fichier vmlinux .



8
votes

hmm, il semble plus facile que cela. -B elf32-TradlittLemips code> ne fonctionne pas car le fichier n'est pas un exécutable elfe, mais binaire. Donc, la bonne option à utiliser est -b binaire code>. L'autre option, -mmips code> fait objdump reconnaît le fichier comme binaire pour MIPS. Puisque la machine cible est petite Endian, je devais aussi ajouter ----------------code> pour faire correspondre la sortie la sortie de xo code>.

-mmips code> > inclut uniquement l'ensemble d'instructions de base. L'AR7 a un processeur MIPS32 qui a plus d'instructions que de mips. Pour décoder ces nouvelles instructions MIPS32, utilisez -mmips: ISA32 code>. Une liste des ISAS disponibles peut être répertoriée avec objdump -i -m code>. P>

La commande finale devient: p> xxx pré>

ceci montrerait des registres comme 3 $ code> au lieu de leurs noms. Pour ajuster cela, j'ai utilisé les options supplémentaires suivantes mentionnées dans Mipsel-Linux-Gnu-Objdump --Help Code>: P>

-Mgpr-names=32,cp0-names=mips32,cp0-names=mips32,hwr-names=mips32,reg-names=mips32


0 commentaires

-1
votes

Utilisez l'ODA, le désassembleur en ligne:

http://www.onlineSassassembler.com


1 commentaires

L'APD limite la taille du fichier pour télécharger jusqu'à 256kb uniquement. En outre, son interface Web n'est pas très intuitive.