我最近决定尝试对QBasic中编码的基于DOS文本的旧游戏进行逆向工程。但是QBasic上没有任何内容。我知道获取原始基本代码可能是不可能的,但是用nasm分解文件我也没有得到任何有用的信息...

任何指针吗?

#1 楼


使用DOSBox启用调试的版本进行调试

使用IDA进行反汇编

尝试编译自己的空qbasic EXE,并进行比较-这将有助于告诉编译器代码根据游戏的实际代码。您可以通过为空EXE创建类似于FLIRT的签名,然后将其导入IDA中的自己的EXE来自动执行此操作。




#2 楼

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

通过该页面上的示例,可以恢复很多代码。我猜想它使用了某种形式的P代码,或者还有一些其他元数据。

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

#3 楼

我发现启用调试的版本有点笨拙。但是我发现使用idados的DOSBox和IDA的组合非常好。这是一个IDA Pro插件,可让您从IDA中控制启用了调试功能的DOSBox的调试器,类似于控制运行其他受支持的远程调试器之一的调试对象的方法。

给出现有的当然,这就像用菜刀代替手术刀一样,但我想我应该提一下,因为它是一种用于反转DOS程序的更通用的方法。会更老,但我认为无关的同名插件,其原始作者并未维护过。我的磁盘(在家中)上仍然有它的副本,但是该网站似乎不再存在。

评论


好吧,我提到的反编译器不是公开的,因此良好的旧调试没有错。

–伊戈尔·斯科钦斯基♦
13年4月3日在10:07