Linux的反汇编程序能够反汇编旧的DOS .COM/.EXE文件

zxc*_*cdw 3 linux reverse-engineering disassembly

我在这里的第一个问题,希望我做错了.

我的问题是我有一个旧的DOS程序,它已经将文件格式严重破解到极致以节省空间.(是的,对于那些知道的人来说,这是一种杀戮.)

Objdump不想帮助我; 快速的谷歌搜索没有产生任何问题的实际结果,并且这方面的联机帮助也不是太慷慨.

还有其他人,比如丽达.但是,出于某种原因,我无法让丽达工作; 我相信还有其他选择.

有没有经验在Linux上拆解DOS可执行文件?或者我应该尝试一些基于DOS的反汇编程序并在Dosemu上运行它?

rus*_*lik 6

IDA是最好的反汇编程序,也有linux版本.它比简单的dissasembler更好,因为它是交互式的.

此外,如果你想看到漂亮的"手工制作"组件,最好看的地方是旧病毒.而不是二进制文件,而是来源,因为它们被评论.你可以试试Netlux.


asv*_*kau 5

ndisasm带有NASM,全网汇编器。它非常通用,包括反汇编原始字节流的能力(因为您提到了 COM 文件)以及一些目标文件格式。严格来说,我认为也可以使用某些objdump选项来反汇编原始字节流,但我不记得是怎么回事了。

然而,自修改代码会使这变得相当棘手。查看字节流,很难预测如果程序会修改自己,最终执行的指令可能是什么,这是 DOS 时代常见的节省空间的技巧。你提到启动到 DOS,这给了我一些有趣的想法:也许你可以使用 DOS 调试器逐步完成它,或者在 DOS 下运行qemu并使用它的调试选项(其中一些包括在执行期间转储程序集输出和寄存器状态)。