マシン命令の短いセット (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)
ですか?