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