Ähnlich wie How do I disassemble raw x86 code?, aber dann für die MIPS-Architektur: Wie zerlege ich rohen MIPS-Code mit objdump
? Ich mag die Anweisungen in einem vmlinux Bild überprüfen, aber ich jetzt zu tun, also müssen:Wie zerlege ich rohen MIPS-Code?
: > x.c
mipsel-linux-gnu-gcc -c -o x.o x.c
mipsel-linux-gnu-objcopy --add-section raw=vmlinux x.o
mipsel-linux-gnu-objcopy --remove-section .comment x.o
mipsel-linux-gnu-objdump -D x.o | less
Gibt es einen einfacheren Weg, es zu tun? Ich habe die unten ohne Erfolg versucht:
mipsel-linux-gnu-objdump -b elf32-tradlittlemips -mmips -Mgpr-names=O32,cp0-names=mips1,cp0-names=mips1,hwr-names=mips1,reg-names=mips1 -D vmlinux | less
Es spuckt gerade aus:
mipsel-linux-gnu-objdump: vmlinux: File format not recognized
Wenn es hilft, ist hier der Ausgang einiger Befehle:
$ 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]
Ziel ist eine AR7 CPU.
vmlinux enthält keine Abschnitte, es enthält nur Anweisungen. Das Problem ist, ich habe die gcc und objcopy Tools nicht installiert, nur in einer VM.Da es einen Weg gab, objdump den gcc/objcopy-Pfad in x86 überspringe, fragte ich mich, ob es auch auf Mips möglich ist. – Lekensteyn
Ich sehe; Ihre Objektdatei 'x.o' ist nur ein Dummy, und Sie ziehen Abschnitte von' vmlinux' ein. Das ist seltsam; Ich konnte "objdump" immer auf 'vmlinux' laufen lassen, für verschiedene Architekturen: MIPS, ARM, ... Was spuckt dieser' mipsel-linux-gnu-objdump' aus, wenn man ihn nur mit '' d vmlinux', ohne diese anderen Argumente? Außerdem: 'file vmlinux'. – Kaz
Datei ergibt 'vmlinux: data' – Lekensteyn