我的第一个问题,希望我做错了。
我的问题是我有一个特定的旧DOS程序,它极大地破解了文件格式,以节省空间。 (是的,对于那些知道的人来说,这是一种杀戮的方法。)
Objdump不想帮助我;快速谷歌搜索没有产生任何问题的实际结果,并且这方面的联机帮助也不是太慷慨。
还有其他人,比如丽达。但是,出于某种原因,我无法让利达工作;我相信还有其他选择。
任何人都有在Linux上反汇编DOS可执行文件的经验吗?或者我应该尝试一些基于DOS的反汇编程序并在Dosemu上运行它?
答案 0 :(得分:6)
IDA是最好的反汇编程序,还有linux版本。它比简单的反汇编更好,因为它是互动的。
此外,如果你想看到漂亮的“手工制作”组装,最好看的地方是旧病毒。而不是二进制文件,而是来源,因为它们被评论。您可以尝试Netlux。
答案 1 :(得分:4)
ndisasm
附带NASM,全网汇编程序。它非常通用,包括能够反汇编原始字节流(因为你提到了COM文件)以及一些目标文件格式。严格来说,我认为也可以用一些objdump
选项反汇编原始字节流,但我不记得是怎么回事。
然而,自修改代码可能会使这个变得相当棘手。查看字节流,如果程序将自行修改,很难预测执行的最终指令是什么,这是DOS时代常见的节省空间的技巧。你提到引导进入DOS,这给了我一些有趣的想法:也许你可以使用DOS调试器逐步完成它,或者在qemu
下运行DOS并使用它的调试选项(其中一些包括转储汇编输出和寄存器状态)执行)。