debugging - 反编译 1990 DOS 应用程序

标签 debugging decompiling decompiler disassembly

我有一些几十年前由一个古老的 16 位 DOS 应用程序编写的关键数据。 没有文档,没有来源,也没有关于作者的信息。只是 16 位的 exe。 我想是时候学习如何反编译东西了,因为这似乎是恢复文件格式的唯一方法。 我试过 OllyDbg,它看起来很棒,但它不能 16 位。

那么,是否有能够处理此类可执行文件的反汇编器/调试器? 谢谢。

UPD:我知道 DOSbox,该应用程序可以在其中运行。问题是,我不需要运行它,我需要了解它写入数据的文件格式。或者也许我对 DOSbox 一无所知,它也可以作为调试器/反编译器运行?或者你的意思是在 DOSbox 中启动一些旧的 16 位 DOS 调试器/反编译器?后者听起来像是一个主意,但是你能命名一个像样的 DOS 调试器吗?

最佳答案

拆机工具:

使用 IDA 免费软件 https://www.hex-rays.com/products/ida/support/download_freeware.shtml 你不会找到任何更好的逆向工具——即使是旧的 dos 程序:)

大多数其他工具只能对 32 位进行反汇编,并且无法达到 IDA 的分析功能 - 它是逆向工程的黄金标准工具

调试器: dosbox 有自己的内置调试器(可通过命令行上的“debug”命令访问) 但是您需要使用激活的调试器(或者更好的重调试)构建自己的 dosbox 版本,请参阅:http://www.vogons.org/viewtopic.php?t=3944

或者如果你有一个带有 sdk 的 ida 许可证,那么有一个可用的 dosbox<->ida-debugger 插件 目前只有 linux https://github.com/wjp/idados

文件格式: 你知道文件包含什么(你想从文件中得到什么) 非常复杂的信息或“只是”一些值列表?

也许最好从这里开始使用十六进制编辑器 (http://mh-nexus.de/de/hxd/) 和要比较的已知结果值

当前哪个程序使用数据(或仅使用程序本身)?或许可以理解这个程序是如何读取数据的?

程序本身: exe有多大? 控制台程序或大型 super gfx 电源应用程序? 真正的 16 位或 32 位与 dos-extender? 单个 exe 或覆盖(dos-dll)?

您可以授予对可执行文件的访问权限吗?

轮到你了

关于debugging - 反编译 1990 DOS 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20155945/

相关文章:

c# - 如何附加到进程并调试未构建的代码?

java - 如何在java web应用程序中找到入口点进行调试?

android - 反编译framework-res.apk多资源异常

java - 反编译后的代码与原始代码不同

java - 如何在eclipse中导入&编辑Jmeter jar文件/jar插件

c++ - MFC反编译为任何非汇编代码

java - 在 eclipse 中调试 tomcat 时找不到特定 jar/class 的源代码

javascript - JavaScript 中正则表达式的意外行为

关于外部类私有(private)变量访问的java内部/外部类问题

assembly - 反汇编程序显示不同的指令