0x042444FF; /* inc dword ptr [esp+4] */
我需要这个工具来知道哪个部分意味着inc
,dword
反之亦然。
您可以使用该objdump
工具将可执行二进制文件“反编译”回汇编代码,但由于可能的优化,生成的汇编代码可能与原始程序集不同(但它们本质上应该相似)。
以下是有点不方便,但它的工作原理:
$ 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
是生成文件中十六进制数据的地址。
您可以使用任何其他工具来创建二进制文件。
命令行工具,它采用该十六进制数字并为您反汇编它。我还没有听说过工具。您可以使用该数字制作一个 elf 文件,并将这四个字节作为二进制文件,然后调用 objdump。有类似的东西,虽然你可以查一下。
http://ref.x86asm.net/index.html
或者
http://ref.x86asm.net/coder32.html
0x44 告诉你这是一个增量。x86 是可变长度的,因此其他一些字节也会发挥作用。如果 0x04 是 esp 的偏移量,我不会感到惊讶。