我有一组简短的机器指令(160 字节),但我不知道它的作用。
我在 Mac 上,我在 GDB 反汇编程序下运行它,结果如下:
....f3c0: jmp 0x7fff5fbff3c6
....f3c2: scas %es:(%rdi),%eax
....f3c3: retq $0xa3bf
....f3c6: sub $0x100,%esp
....f3cc: xor %ecx,%ecx
....f3ce: mov %cl,(%rsp,%rcx,1)
+ 50 more lines....
我对汇编程序知之甚少,但有些命令看起来很有趣(比如rex.RXB, rex.WB, rex.B
)。所以经过一番谷歌搜索后,我发现这个命令告诉我它是一个 DOS 可执行文件:
$ file program
program: DOS executable (COM)
- 有没有可以反汇编DOS可执行文件的程序?
如果没有,我会尝试手动反汇编,因为只有 160 个字节。但是,我需要参考每个字节的含义。例如
90 = NOP
8a = MOV
....
DOS机器代码指令是否有这样的参考?
我还能如何找出程序的作用?
更新:
在 IGOR 的一个很好的建议之后,我使用不同的程序反汇编了代码。但是,仍然有一些不好的说明:
e: 88 0c mov BYTE PTR [si],cl
10: 0c fe or al,0xfe
12: c1 (bad)
13: 75 f9 jne 0xe
......
......
96: 90 nop
97: e8 9d ff call 0x37
9a: ff (bad)
9b: ff 41 41 inc WORD PTR [bx+di+0x41]
- 任何想法为什么它说
(bad)
?