我知道如何从可执行文件中获取操作码和相应的汇编语法;但是有一种简单的方法可以单独获取特定汇编指令的操作码,而无需使用相同的程序编写程序,然后手动链接并加载它并对可执行文件执行objdump吗?
有没有一种简单的方法可以找到特定指令的相应操作码?
答案 0 :(得分:4)
您可以使用gdb(GNU Debugger)的x / bx命令。
我在这里做了一个教程:
答案 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中的几行。运行