对旧的 DOS QBasic 可执行文件进行逆向工程

逆向工程 拆卸 反编译 x86 二元分析 dos-exe
2021-06-17 04:08:07

我最近决定尝试对一个用 QBasic 编码的基于 DOS 文本的旧游戏进行逆向工程。

我在网上找到了一些关于旧 DOS 游戏反汇编的信息,但主要是针对 Wacom 编译的 C/C++ 二进制文件,但在 QBasic 上没有。我知道获得原始的基本代码可能是不可能的,但是使用 nasm 反汇编文件我也没有得到任何有用的信息......

任何指针?

3个回答
  • 使用DOSBox 启用调试的版本进行调试
  • 用 IDA 反汇编
    • 尝试编译您自己的空 qbasic EXE,并进行比较 - 这将有助于从游戏的实际代码中分辨出编译器代码。您可以通过创建空 EXE 的类似 FLIRT 的签名然后在 IDA 中导入您自己的 EXE 来自动执行此操作。

显然,DOS Basic 可执行文件的反编译器已经存在

通过该页面示例,可以恢复相当多的代码。我猜它使用了某种形式的 P 代码,或者有一些额外的元数据。

对反编译器错误消息的描述可以提供有关 Basic 运行时实现的各种功能的一些提示。

我发现启用调试的构建有点笨拙。但是我发现使用idados将 DOSBox 和 IDA 结合起来非常好这是一个 IDA Pro 插件,它允许您从 IDA 中控制启用调试的 DOSBox 构建的调试器,类似于您如何控制运行其他支持的远程调试器之一的调试器。

鉴于 Igor 的现有答案,这当然就像使用菜刀而不是手术刀,但我想我应该提到它,因为它是一种更通用的反转 DOS 程序的方法

注意:曾经有一个更旧的,但我认为不相关的同名插件,它的原作者没有维护。我的磁盘上仍然有它的副本(在家里),但该网站似乎不再存在。