gpt4 book ai didi

debugging - 用于 32 位 x86 汇编的 DOS 调试程序

转载 作者:行者123 更新时间:2023-12-03 06:59:43 24 4
gpt4 key购买 nike

你们中的许多人可能还记得旧的 DOS 程序——debug。尽管它在很多方面都过时了,但它的好处之一是,人们可以轻松地找到给定指令的字节序列,而不必经历编写程序、编译、反汇编、检查文件内容等步骤。 .. 输入指令,然后转储指令地址。遗憾的是“debug”不执行 32 位指令。

有人知道有一个工具可以对 32 位 x86 指令执行类似的操作吗?我不想经历整个编译过程;我只需要能够输入几个指令并让它输出指令的长度及其字节序列。

最佳答案

DOS debug 是一个交互式汇编器和调试器,输入汇编代码会导致该行立即转换为机器代码 - 这就是您转储的内容。

因此,您所需要的只是使用脚本或批处理文件来自动化您最喜欢的汇编程序。

这是我使用流行的 nasm 一两分钟内想出的 bash 函数。汇编器:

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 命令行以获得更好的输出。只要您告诉它使用简单的二进制输出格式,这个想法就应该适用于任何命令行汇编器。

关于debugging - 用于 32 位 x86 汇编的 DOS 调试程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3206535/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com