mips 纯二进制反汇编(bin文件)

时间:2022-09-26 11:47:40

Usage: mipsel-linux-objdump <option(s)> <file(s)>
Display information from object <file(s)>.
At least one of the following switches must be given:
-a, --archive-headers Display archive header information
-f, --file-headers Display the contents of the overall file header
-p, --private-headers Display object format specific file header contents
-h, --[section-]headers Display the contents of the section headers
-x, --all-headers Display the contents of all headers
-d, --disassemble Display assembler contents of executable sections
-D, --disassemble-all Display assembler contents of all sections
-S, --source Intermix source code with disassembly
-s, --full-contents Display the full contents of all sections requested
-g, --debugging Display debug information in object file
-e, --debugging-tags Display debug information using ctags style
-G, --stabs Display (in raw form) any STABS info in the file
-W, --dwarf Display DWARF info in the file
-t, --syms Display the contents of the symbol table(s)
-T, --dynamic-syms Display the contents of the dynamic symbol table
-r, --reloc Display the relocation entries in the file
-R, --dynamic-reloc Display the dynamic relocation entries in the file
@<file> Read options from <file>
-v, --version Display this program's version number
-i, --info List object formats and architectures supported
-H, --help Display this information

The following switches are optional:
-b, --target=BFDNAME Specify the target object format as BFDNAME
-m, --architecture=MACHINE Specify the target architecture as MACHINE
-j, --section=NAME Only display information for section NAME
-M, --disassembler-options=OPT Pass text OPT on to the disassembler
-EB --endian=big Assume big endian format when disassembling
-EL --endian=little Assume little endian format when disassembling
--file-start-context Include context from start of file (with -S)
-I, --include=DIR Add DIR to search list for source files
-l, --line-numbers Include line numbers and filenames in output
-C, --demangle[=STYLE] Decode mangled/processed symbol names
              The STYLE, if specified, can be `auto', `gnu',
              `lucid', `arm', `hp', `edg', `gnu-v3', `java'
              or `gnat'
-w, --wide Format output for more than 80 columns
-z, --disassemble-zeroes Do not skip blocks of zeroes when disassembling
  --start-address=ADDR Only process data whose address is >= ADDR
  --stop-address=ADDR Only process data whose address is <= ADDR
  --prefix-addresses Print complete address alongside disassembly
  --[no-]show-raw-insn Display hex alongside symbolic disassembly
  --adjust-vma=OFFSET Add OFFSET to all displayed section addresses
  --special-syms Include special symbols in symbol dumps

mipsel-linux-objdump: supported targets: elf32-tradlittlemips elf32-tradbigmips ecoff-littlemips ecoff-bigmips elf32-ntradlittlemips elf64-tradlittlemips elf32-ntradbigmips elf64-tradbigmips elf64-little elf64-big elf32-little elf32-big srec symbolsrec tekhex binary ihex


mipsel-linux-objdump: supported architectures: mips mips:3000 mips:3900 mips:4000 mips:4010 mips:4100 mips:4111 mips:4120 mips:4300 mips:4400 mips:4600 mips:4650 mips:5000 mips:5400 mips:5500 mips:6000 mips:7000 mips:8000 mips:9000 mips:10000 mips:12000 mips:16 mips:mips5 mips:isa32 mips:isa32r2 mips:isa64 mips:isa64r2 mips:sb1

The following MIPS specific disassembler options are supported for use
with the -M switch (multiple options should be separated by commas):

  gpr-names=ABI Print GPR names according to specified ABI.
          Default: based on binary being disassembled.

  fpr-names=ABI Print FPR names according to specified ABI.
          Default: numeric.

  cp0-names=ARCH Print CP0 register names according to specified architecture.
          Default: based on binary being disassembled.

  hwr-names=ARCH Print HWR names according to specified  architecture.
          Default: based on binary being disassembled.

  reg-names=ABI Print GPR and FPR names according to specified ABI.

  reg-names=ARCH Print CP0 register and HWR names according to specified architecture.

For the options above, the following values are supported for "ABI":
numeric 32 n32 64

For the options above, The following values are supported for "ARCH":
numeric r3000 r3900 r4000 r4010 vr4100 vr4111 vr4120 r4300 r4400 r4600 r4650 r5000 vr5400 vr5500 r6000 rm7000 rm9000 r8000 r10000 r12000 mips5 mips32 mips32r2 mips64 mips64r2 sb1

 

mipsel-linux-objdump -D test.exe

得到:
test.exe: file format elf32-tradlittlemips

 Disassembly of section .init:

 1fc00000 <main>:
 1fc00000: 3c011fc0 lui at,0x1fc0
 1fc00004: 24210020 addiu at,at,32
 1fc00008: 8c220000 lw v0,0(at)
 1fc0000c: 8c230004 lw v1,4(at)
 1fc00010: 00000000 nop
 1fc00014: 00432020 add a0,v0,v1
 1fc00018: ac240008 sw a0,8(at)
 1fc0001c: 00000000 nop
 
 1fc00020 <value>:
 1fc00020: 0000000a 0xa
 1fc00024: 00000014 0x14
 ...
 1fc00030: 1000001e b 1fc000ac <_gp+0x5c>
 1fc00034: 00000000 nop
 ...

 

hexdump -v -e '"%06_ax\t" 1/4 "%08X" "\n" ' test.bin

得:

000000  3C011FC0
000004  24210020
000008  8C220000
00000c  8C230004
000010  00000000
000014  00432020
000018  AC240008
00001c  00000000
000020  0000000A
000024  00000014
000028  00000000
00002c  00000000
000030  1000001E
000034  00000000
000038  00000000
00003c  00000000
000040  00000000
000044  00000000

 


mipsel-linux-objdump -D -m mips -b binary -EL -M no-aliases test.bin

test.bin: file format binary

Disassembly of section .data:

0000000000000000 <.data>:
0: 3c011fc0 lui at,0x1fc0
4: 24210020 addiu at,at,32
8: 8c220000 lw v0,0(at)
c: 8c230004 lw v1,4(at)
10: 00000000 sll zero,zero,0x0
14: 00432020 add a0,v0,v1
18: ac240008 sw a0,8(at)
1c: 00000000 sll zero,zero,0x0
20: 0000000a 0xa
24: 00000014 dsllv zero,zero,zero
...
30: 1000001e beqz zero,0xac
34: 00000000 sll zero,zero,0x0
...

 

 


mipsel-linux-objdump -D -m mips -b binary -EL -M no-aliases -z test.bin

test.bin: file format binary

Disassembly of section .data:

0000000000000000 <.data>:
0: 3c011fc0 lui at,0x1fc0
4: 24210020 addiu at,at,32
8: 8c220000 lw v0,0(at)
c: 8c230004 lw v1,4(at)
10: 00000000 sll zero,zero,0x0
14: 00432020 add a0,v0,v1
18: ac240008 sw a0,8(at)
1c: 00000000 sll zero,zero,0x0
20: 0000000a 0xa
24: 00000014 dsllv zero,zero,zero
28: 00000000 sll zero,zero,0x0
2c: 00000000 sll zero,zero,0x0
30: 1000001e beqz zero,0xac
34: 00000000 sll zero,zero,0x0
38: 00000000 sll zero,zero,0x0
3c: 00000000 sll zero,zero,0x0
40: 00000000 sll zero,zero,0x0
44: 00000000 sll zero,zero,0x0

 

 

 

 

 

 

mipsel-linux-objdump -D -m mips -b binary -EL -z test.bin

test.bin: file format binary

Disassembly of section .data:

0000000000000000 <.data>:
0: 3c011fc0 lui at,0x1fc0
4: 24210020 addiu at,at,32
8: 8c220000 lw v0,0(at)
c: 8c230004 lw v1,4(at)
10: 00000000 nop
14: 00432020 add a0,v0,v1
18: ac240008 sw a0,8(at)
1c: 00000000 nop
20: 0000000a 0xa
24: 00000014 dsllv zero,zero,zero
28: 00000000 nop
2c: 00000000 nop
30: 1000001e b 0xac
34: 00000000 nop
38: 00000000 nop
3c: 00000000 nop
40: 00000000 nop
44: 00000000 nop

 

 

mipsel-linux-objdump -D -m mips -b binary -EL test.bin
test.bin: file format binary

Disassembly of section .data:

0000000000000000 <.data>:
0: 3c011fc0 lui at,0x1fc0
4: 24210020 addiu at,at,32
8: 8c220000 lw v0,0(at)
c: 8c230004 lw v1,4(at)
10: 00000000 nop
14: 00432020 add a0,v0,v1
18: ac240008 sw a0,8(at)
1c: 00000000 nop
20: 0000000a 0xa
24: 00000014 dsllv zero,zero,zero
...
30: 1000001e b 0xac
34: 00000000 nop
...