如何逆向工程QuickBasic应用程序?

3

我有一款使用QuickBasic编写的应用程序(游戏)。我拥有它的版权,但没有编写原始代码。我现在已经拿到源代码了,但是我正在试图理解其中的意义。是否有任何方法可以使反向工程更容易?目前,我正在使用FbEdit尝试将应用程序分解成其各个组成部分。


1
希望这不是我写的游戏之一。:-) 虽然它们是在90年代初编写的,而且我知道现在我是一个更好的程序员...但我希望认为它并不那么糟糕。 - Andy Finkenstadt
1个回答

5
如果你已经有代码并且只是想理解它,那么你并不是真正的逆向工程。听起来更像是在做“维护”,但是先不管这个。
处理遗留项目需要大量阅读代码、弄清楚它在做什么、做笔记以及重命名东西,直到你能够分离出部分内容,无论是UI/菜单、动画、AI或者游戏所做的任何事情。
对于反汇编dos游戏(使用汇编语言),我倾向于:
找到调用图形中断的代码区域,并将其命名为graphics_N,文件处理或声音等也是如此。然后你可能会注意到文本/菜单在哪里,你就知道它在游戏中的位置,所以你可以单步执行代码并查看代码是如何跳转的。你可能会注意到一些子函数更新了动画,你可以将其命名为动画名称,然后找到其他地方调用它以更好地理解它是如何被使用和在哪里被使用的。
有了代码访问权限,如果变量、函数和结构体没有意义的名称,我会感到震惊。但是QB更容易使用小名称……
我没有使用过FBEdit,但Visual Studio可以很好地读取QB代码(它认为它是VB6/VB.Net),但从那里你可以很快地将其重写为C#。我已经为我的一些旧QB代码做过这样的事情。你只需要编写一些帮助函数来执行经典QB功能,直到你删除这些基本抽象。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接