聘我网

新概念招聘3.0

如何将十六进制机器码转化为x86-64汇编?

vote up0vote downstar
ba000000004885ff74144889fa8b073b02480f4cd7488b7f084885ff75ef4889d0c3 

如何才能将上面这段机器码还原成x86-64汇编码?

 

1 个答复

vote up0vote downcheck

先把机器码存为二进制文件,然后objdump:

[root@ test]# echo -e -n `echo ba000000004885ff74144889fa8b073b02480f4cd7488b7f084885ff75ef4889d0c3 |  sed -r 's/(..)/\\\x\1/g'` >f.bin
[root@ test]# hexdump f.bin
0000000 00ba 0000 4800 ff85 1474 8948 8bfa 3b07
0000010 4802 4c0f 48d7 7f8b 4808 ff85 ef75 8948
0000020 c3d0                                   
0000022
[root@ test]# objdump -D -b binary -m i386:x86-64 f.bin

f.bin:     file format binary

Disassembly of section .data:

0000000000000000 <.data>:
   0:   ba 00 00 00 00          mov    $0x0,%edx
   5:   48 85 ff                test   %rdi,%rdi
   8:   74 14                   je     0x1e
   a:   48 89 fa                mov    %rdi,%rdx
   d:   8b 07                   mov    (%rdi),%eax
   f:   3b 02                   cmp    (%rdx),%eax
  11:   48 0f 4c d7             cmovl  %rdi,%rdx
  15:   48 8b 7f 08             mov    0x8(%rdi),%rdi
  19:   48 85 ff                test   %rdi,%rdi
  1c:   75 ef                   jne    0xd
  1e:   48 89 d0                mov    %rdx,%rax
  21:   c3                      retq   

-D表示disassemble-all,

-b binary表示是二进制文件,

-m i386:x86-64表示架构是x86-64.

链接

您的回答





不是您要找的问题? 浏览其他含有标签 的问题或者 自己问个.