我们正在寻找快速的基本反编译器。该程序很旧,用DOS编写,现在我们希望通过附加功能在Windows中增强该代码。不幸的是,开发人员是不可追踪的,唯一的希望是反编译。
请提出实现这一挑战的最佳方法。
谢谢
[ 由 Dan 在 http://qbasicnews.com 的 QB 论坛上,2003 年 5 月 4 日 ]
以下是Microsoft对这个问题的回答: Microsoft 目前不提供任何能够"反编译"对象 (.OBJ) 或可执行 (.EXE) 文件返回到原始源代码 (.巴斯)。以下是造成这种情况的几个原因:
-
没有反编译器可以完全复制原始源代码。 当程序被编译为对象并链接以生成可执行文件时,原始程序中使用的大多数"名称"都转换为地址。这种名称丢失意味着反编译器必须为所有变量、过程和标签创建唯一的名称,而这些名称在程序上下文中没有意义。 显然,源语言语法不再存在于编译的目标文件或可执行文件中。反编译器很难解释对象或可执行文件中存在的一系列机器语言指令,并确定原始源语言指令是什么。
-
如果这样的反编译器确实存在并且可用,任何人都可以使用它来反编译以反编译器设计的语言生成的任何可执行程序。 例如,如果存在 Microsoft BASIC 反编译器,则具有该反编译器的任何人都可以在您生成的可执行文件上使用它,并从该可执行文件中获取源代码的副本。你用 BASIC 编写的任何程序的源代码Microsoft都可以提供给任何使用反编译器的人。很少有商业软件的开发人员愿意使用可以破译的语言产品,从而允许其他人获得他们的源代码。
有一些来自前微软程序员的谈话,他们发誓有一个供他们私人使用。我还在一个网站上看到了一个基本的反编译器服务,它确实提供了一些来自你的exe的工作BAS代码,但它是一团糟,不值得为服务(http://02c1289.netsolhost.com)要求花钱。
作为我职业生涯中几乎全部的BASIC软件开发人员,我可以告诉你,这不是你想要的。 当需要将我的会计软件从DOS BASIC"移植"到Visual BASIC时,由于它是我自己的代码,因此具有源代码和对代码的完整理解,这丝毫没有帮助。 它可能是一个过度使用的表达式,但DOS和Windows是苹果和橙子。 您不能简单地转换代码,您必须重新设计和编码系统。
您所需要的只是您已经拥有的 - 编译代码的工作版本。 使用它的屏幕在 Windows 中设计数据库和屏幕,然后编写基础代码。 无论如何,这两件事的设计通常占工作的一半到90%。 现在,它确实帮助我有了自己的来源,例如"我如何再次计算这些税款? 我可以将纯逻辑代码从DOS复制到Windows,只需很少或没有更改,但是任何涉及数据库或用户界面的内容都必须完全重做。
如果你不能胜任,那就找一个能胜任的人。
同样,你不需要源代码,除非有某种秘密算法你需要复制并且不了解自己。