starblue và hlovdal cả hai đều có một phần của câu trả lời chuẩn. Nếu bạn muốn tháo rời đang i8086 liệu, bạn thường muốn cú pháp Intel, không AT & cú pháp T, quá, vì vậy sử dụng:
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
Nếu mã của bạn là ELF (hoặc a.out (hoặc (E) COFF)), bạn có thể sử dụng mẫu ngắn:
objdump -D -Mintel,i8086 a.out # disassembles the entire file
objdump -d -Mintel,i8086 a.out # disassembles only code sections
Đối với mã 32 bit hoặc 64 bit, bỏ qua ,8086
; tiêu đề ELF đã bao gồm thông tin này.
ndisasm
, theo đề nghị của jameslin, cũng là một lựa chọn tốt, nhưng objdump
thường đi kèm với hệ điều hành và có thể đối phó với tất cả các kiến trúc được hỗ trợ bởi GNU binutils (superset của những hỗ trợ bởi GCC), và sản lượng của nó thường có thể được cho ăn vào GNU as
(của ndisasm thường có thể được cho vào nasm
mặc dù, tất nhiên).
Peter Cordes cho thấy rằng “Agner Fog's objconv rất đẹp. Nó đặt nhãn trên các mục tiêu chi nhánh, giúp dễ dàng hơn nhiều để tìm ra mã nào. Nó có thể tháo rời thành cú pháp NASM, YASM, MASM hoặc AT & T (GNU). ”
Multimedia Mike đã phát hiện ra khoảng --adjust-vma
; số tương đương ndisasm
là tùy chọn -o
.
Để tháo gỡ, nói, sh4
mã (tôi đã sử dụng một nhị phân từ Debian để kiểm tra), sử dụng điều này với GNU binutils (hầu hết disassemblers khác được giới hạn một nền tảng, chẳng hạn như x86 với ndisasm
và objconv
):
objdump -D -b binary -m sh -EL x
các -m
là máy, và -EL
nghĩa Little Endian (ví sh4eb
sử dụng -EB
thay), trong đó có liên quan cho các kiến trúc tồn tại trong cả hai endian.
Đây không phải là tệp nhị phân phẳng. Có vẻ như đó là tệp ELF. – Calmarius
Trong ví dụ trên, tôi đã đề cập đến một tập tin ELF (file.elf) để minh họa rằng tôi đã quen thuộc với các nguyên tắc tháo gỡ cơ bản. Tuy nhiên, các tập tin tôi đã quan tâm trong việc tháo rời hoàn toàn là một tập tin nhị phân phẳng. Các byte đầu tiên trong tệp là các opcodes đầu tiên được thực thi. Không có tiêu đề. –
Bản sao có thể có của [Làm thế nào để tôi tháo rời mã x86 thô?] (Http://stackoverflow.com/questions/1737095/how-do-i-disassemble-raw-x86-code) –