我有一个用QuickBasic编写的应用程序(一个游戏)。我拥有它的权利,但没有写原始代码。源代码就在我面前,但我一直在绞尽脑汁,试图弄明白其中的含义。有什么方法可以使逆向工程更容易吗?现在我正在使用FbEdit,只是试图将应用程序分成各个组件部分。
如果你有代码,你只是试图理解它,你就不是真正的逆向工程。听起来你更像是在做"维护",但先不说这个。
处理遗留项目需要大量阅读代码,弄清楚它在做什么,做笔记,重命名内容,直到你能够分离出各个部分,无论是UI/菜单,动画,AI还是游戏所做的任何事情。
对于逆向工程dos游戏(汇编),我倾向于:找到调用图形中断的代码区域,并开始将这些区域命名为graphics_N,文件处理或声音等也是如此。然后你可能会注意到文本/菜单的位置,你知道它们在游戏中的位置,这样你就可以单步浏览代码,看看代码是如何跳跃的。你可能会注意到一些子函数更新动画,你可以这样命名它,然后找到调用它的地方else were来更好地理解如何以及在哪里使用它。
在访问代码时,如果变量、函数和结构体的名称没有意义,我会感到震惊。但是四分卫更容易用小名…
我没有使用过FBEdit,但是Visual Studio在阅读QB代码方面做得很好(它认为它是VB6/VB.Net),但是从那里你可以很快地将它重写为c#。我已经为我的一些旧的QB代码这样做了。您只需要编写一些辅助函数来执行经典的QB函数,直到移除这些基本抽象。