starbluehlovdal i oba mają części odpowiedź kanonicznej. Jeśli chcesz zdemontować surowy kod i8086, zwykle chcesz składni Intela, a nie na & składni T, zbyt, więc używać:
objdump -D -Mintel,i8086 -b binary -m i386 mbr.bin
objdump -D -Mintel,i386 -b binary -m i386 foo.bin # for 32-bit code
objdump -D -Mintel,x86-64 -b binary -m i386 foo.bin # for 64-bit code
Jeśli kod jest ELF (lub a.out (lub (E) COFF)), można użyć krótki formularz:
objdump -D -Mintel,i8086 a.out # disassembles the entire file
objdump -d -Mintel,i8086 a.out # disassembles only code sections
Dla 32-bitowego lub 64-bitowego kodu, należy pominąć ,8086
; Nagłówek ELF zawiera już te informacje.
ndisasm
, jak sugeruje jameslin, to również dobry wybór, ale objdump
zazwyczaj pochodzi z systemu operacyjnego i może poradzić sobie z wszystkich architekturach wspieranych przez binutils GNU (rozszerzeniem tych wspieranych przez GCC), a jego wyjście można zazwyczaj karmione na GNU as
(ndisasm może oczywiście być podany oczywiście pod nasm
).
Peter Cordes sugeruje, że "Agner Fog's objconv jest bardzo ładne. Nakłada etykiety na rozgałęzione cele, znacznie ułatwiając zrozumienie kodu. Można go zdemontować w NASM, yasm, MASM, albo & składni T (GNU) „
Multimedia Mike już dowiedział się o --adjust-vma
.; odpowiednik ndisasm
jest opcją -o
.
Aby zdemontować, powiedzmy, kod sh4
(użyłem jeden plik binarny z Debiana do testowania), użyj tego z binutils GNU (prawie wszystkie inne deasembler są ograniczone do jednej platformy, takie jak x86 z ndisasm
i objconv
):
objdump -D -b binary -m sh -EL x
-m
jest maszyna, a -EL
oznacza little endian (dla sh4eb
użytku -EB
zamiast), co jest istotne dla architektur, które istnieją w każdej bajt.
To nie jest płaski plik binarny. Wygląda na to, że to plik ELF. – Calmarius
W powyższym przykładzie wspomniałem o pliku ELF (file.elf), aby zilustrować, że znałem podstawowe zasady demontażu. Jednak plik, który był zainteresowany demontażem, był absolutnie płaskim plikiem binarnym. Pierwsze bajty w pliku były pierwszymi kodami do wykonania. Nie było nagłówka. –
Możliwy duplikat [Jak mogę zdekompresować surowy kod x86?] (Http://stackoverflow.com/questions/1737095/how-do-i-disassemble-raw-x86-code) –