【问题标题】:Comparing VB6.exes比较 VB6.exe
【发布时间】:2023-03-28 12:04:01
【问题描述】:

我们正在经历一个大规模的迁移项目,并试图验证部署到现场的代码是否与我们在源代码控制中的代码相匹配。

显然 .net 代码很容易比较,因为我们可以反汇编。由于编译方式,我不相信这在 vb6 exe 中是可能的。

是否有人对我如何验证源代码以及编译后的可执行文件与我在 Live 中的文件匹配有任何想法。

谢谢

【问题讨论】:

  • 听起来您需要更好的源代码控制和/或策略。

标签: vb6 migration compare


【解决方案1】:

Visual Basic 有(有)两种编译方式,一种是编译器(称为 P 代码),它会生成更小的二进制文件,另一种是生成“常规”windows .exe 文件(称为本机),它是引入是因为它应该比 p-code 快;尽管使用此选项会增加编译文件的大小。 如果您的编译使用的是 p-code,理论上可以恢复源代码。

无论哪种方式都很难做到,但是有些工具声称他们可以部分做到这一点,我知道的一个(从未尝试过,但有试用版)是 VB 反编译器 http://www.vb-decompiler.org/

【讨论】:

  • 很棒的工具。这永远不会是一门完美的科学。我们正在做的是用 exe 反编译并保存项目文件。然后我们使用 Beyond Compare 工具进行比较。不完美,但这是一个开始。谢谢
【解决方案2】:

不幸的是,这几乎是不可能的。请记住,在不同机器上编译的 VB6 代码会有不同的 exe 大小和部署要求。

这就是为什么老 VB'ers 有一台专门的机器来编译他们的代码。

【讨论】:

    【解决方案3】:

    这不会帮助您处理已部署的项目,但如果您在每次编译时提高修订号(有一个项目设置可以自动为您执行此操作),那么您可以轻松比较版本号。

    【讨论】:

      【解决方案4】:

      我的旧公司购买了该 VB-Decompiler 的副本,并且如前所述 VB5/6 生成额外的 P-Code,该工具确实生成了一些代码,如果不是可以“读取”的汇编代码。

      【讨论】:

        【解决方案5】:

        如果您拥有已编译的所有代码,则可以将该代码的 CRC 与现场部署的代码进行比较。但是,如果您没有原始编译代码,则取决于您如何编译代码(如果您使用 P 代码而不是本机代码,您可能能够反汇编,但反汇编看起来与您的源代码完全不同)。我怀疑您是否会将 PDB 与 exe 一起发布,但如果您这样做了,您当然可以使用它们与您的存储库中的源代码进行比较。

        【讨论】:

          【解决方案6】:

          拥有一台可以检查您制作的各种库和 exe 并自动编译它们的受信任的计算机。将它们保存在只读但可访问的位置。然后在部署的站点和您的比较站点之间进行二进制比较。

          但是我不确定拆卸已编译单元的逻辑。我的公司和我所知道的大多数其他地方都使用构建计算机和单元测试的组合。在我们公司,我们制作的 EXE 是一堆库中的一个非常薄的外壳。例如,按钮单击将传递给执行实际处理的 UI Active X DLL。我们在构建之后要做的是运行一个特殊的 EXE 来执行我们的单元测试列表。如果他们都通过了,我们就知道我们的库(我们 90% 的代码所在的位置)是好的。至于实际的EXE,我们有一个大约需要两个小时才能完成的手动程序,然后我们就很好了。 IEXE中很少发生错误。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-12-19
            • 1970-01-01
            • 2010-10-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多