2010-07-08 79 views
6

你们中许多人可能会想起旧的DOS程序 - 调试。尽管在很多方面已经过时,但其中的一个好处在于,人们可以轻松地找到给定指令的字节序列,而无需通过编写程序,编译,分解,检查文件内容的步骤。输入指令,然后转储指令地址。 '调试'遗憾的是不做32位指令。DOS调试程序适用于32位x86程序集

有没有人知道一个工具,为32位x86指令做类似的工作?我不想完成整个编译过程;我只需要能够输入几条指令,并且能够指出指令的长度和字节顺序。

+0

有趣的问题!为什么不标记“调试”? – pmod 2010-07-08 18:01:44

+0

直到您提到它时,才想到要添加“调试”标签。谢谢。 – Sparky 2010-07-08 18:09:39

回答

4

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

+0

谢谢!你摇滚! – Sparky 2010-07-13 15:24:26

1

有几个简单的32位命令行调试器可以找到。根据您的描述,OllyDbg可能适合您的需求。至少有一些版本的Microsoft的Debugging Tools for Windows包括一个名为CDB,这代表了命令行调试器(虽然我还没有证实该链接的版本包括它...)

+0

有趣。还不确定它是否适合我的目的,但我仍然在玩它。感谢您的建议。 – Sparky 2010-07-08 18:56:45

相关问题