是否有命令行工具来获取汇编指令的机器代码?

时间:2010-09-15 09:01:07

标签: assembly machine-code

0x042444FF; /* inc dword ptr [esp+4] */

我需要此工具来了解哪个部分意味着incdword,反之亦然。

3 个答案:

答案 0 :(得分:1)

您可以使用objdump工具将可执行二进制文件“反编译”回汇编代码,但由于可能的优化,生成的汇编代码可能与原始程序集不同(但它们应该类似)实质上)。

答案 1 :(得分:0)

命令行工具,获取该十六进制数并为您反汇编。我还没有听说过一个工具。您可以将该数字作为二进制文件从其中生成一个elf文件,然后调用objdump。有这样的东西虽然你可以查一查。

http://ref.x86asm.net/index.html

http://ref.x86asm.net/coder32.html

0x44告诉你它是一个增量。 x86是可变长度的,因此其他一些字节起作用。如果0x04是esp的偏移量,我不会感到惊讶。

答案 2 :(得分:0)

以下有点不方便,但有效:

$ xxd -r > objdump-test.bin
0000 ff 44 24 04
$ objdump -D --target=binary --architecture i386:intel objdump-test.bin 

objdump-test.bin:     file format binary

Disassembly of section .data:

0000000000000000 <.data>:
   0:   ff 44 24 04             inc    DWORD PTR [esp+0x4]

xxd是一个可以反向工作的hexdump实用程序,它是X11的一部分。 0000是结果文件中十六进制数据的地址。

您可以使用任何其他工具来创建二进制文件。