你们中的许多人可能还记得古老的 DOS 程序——debug。尽管它在很多方面都已经过时,但它的好处之一是,人们可以轻松地找到给定指令的字节序列,而无需经历编写程序、编译、反汇编、检查文件内容等步骤。 .. 输入指令,然后转储指令地址。遗憾的是“调试”不执行 32 位指令。
有谁知道有一个工具可以对 32 位 x86 指令执行类似的操作吗?我不想经历整个编译过程;我只需要能够输入几个指令并让它输出指令的长度及其字节序列。
DOS debug
是一个交互式汇编器和调试器,输入汇编代码会导致该行立即转换为机器代码 - 这就是您转储的内容。
因此,您所需要的只是使用脚本或批处理文件来自动化您最喜欢的汇编程序。
这是我用流行的方法在一两分钟内想出的 bash 函数nasm http://www.nasm.us/汇编器:
opcode() {
echo $* > tmp.S && nasm tmp.S -o tmp.o && od -x tmp.o
rm -f tmp.o tmp.S
}
需要不到一秒钟的时间。调用看起来像这样:
$ opcode mov eax, [ebx]
0000000 6667 038b
0000004
$ opcode fadd st0,st1
0000000 c1d8
0000002
不是很出色,但是您可以调整 od 命令行以获得更好的输出。只要您告诉它使用简单的二进制输出格式,这个想法就应该适用于任何命令行汇编器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)