获取操作码的简便方法

时间:2011-01-23 16:10:49

标签: assembly x86

我知道如何从可执行文件中获取操作码和相应的汇编语法;但是有一种简单的方法可以单独获取特定汇编指令的操作码,而无需使用相同的程序编写程序,然后手动链接并加载它并对可执行文件执行objdump吗?

有没有一种简单的方法可以找到特定指令的相应操作码?

5 个答案:

答案 0 :(得分:4)

您可以使用gdb(GNU Debugger)的x / bx命令。

我在这里做了一个教程:

<德尔> http://aimbots.net/tutorials/9276-how-get-op-codes.html

http://aimbots.net/threads/9276-How-to-get-OP-codes

答案 1 :(得分:4)

前一段时间我问了一个类似的问题(DOS debug like program for 32-bit x86 assembly)。

有人非常友好地为我提供了一个自动化脚本来执行此操作。您可以点击提问链接,或参考他们在下面提供给我的脚本......

opcode() {
  echo $* > tmp.S && nasm tmp.S -o tmp.o && od -x tmp.o
  rm -f tmp.o tmp.S
}

希望这有帮助。

答案 2 :(得分:3)

X86 Opcode and Instruction Reference在32位和64位x86处理器上包含一堆指令参考表及其相应的操作码。

答案 3 :(得分:3)

对于x86,您可以在英特尔手册(Part 1 (A-M)Part 2 (N-Z))中查找它们。不,我不知道为什么手册分为两部分。

答案 4 :(得分:0)

我不确定你为什么要操作码。但是如果它用于漏洞利用开发,你可能已经有了metasploit,它带有一个非常有用的ruby脚本,名为nasm_shell.rb(在tools目录中)。

您键入的每一行都是正确操作码的ascii十六进制表示。

如果出于某种其他目的或者您不希望某些重量级工具包(如metasploit)因任何原因而闲置,您可以拔出脚本并安装其依赖项。它使用Rex并假设安装了nasm。

如果你想调整它,你需要的实际代码只是函数shell中的几行。运行