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]
3 Réponses :
??? Quel est le problème avec juste: est le problème que ou quelle que soit l'obtention du code de montage de GCC: P> -d code> diassemble toutes les sections, code ou non? Utilisez
-d code> alors. Ou
-s code> pour afficher l'assemblage entrelacé avec la source (implique
-d code>). P>
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 code> est juste un mannequin et vous tirez dans des sections de
vmlinux code>. C'est étrange; J'ai toujours été capable de simplement exécuter
objdump code> sur
vmlinux code>, pour diverses architectures: MIPS, bras, ... Qu'est-ce que ce
Mipsel-Linux-gnu- Objdump Code> Spit Out si vous venez d'appeler cela avec
-D vmlinux code>, sans ces autres arguments? Aussi:
fichier vmlinux code>.
hmm, il semble plus facile que cela. La commande finale devient: p> ceci montrerait des registres comme -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>
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
Utilisez l'ODA, le désassembleur en ligne: P>
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.
Si vous n'insistez pas à l'aide d'Objdump, voir aussi MIPS Désassembler - Exchange de pile d'ingénierie inverse