代码之家  ›  专栏  ›  技术社区  ›  Lee Gathercole

比较VB6.exes

  •  2
  • Lee Gathercole  · 技术社区  · 17 年前

    我们正在经历一个大规模的迁移项目,并试图验证部署到live estate的代码是否与源代码管理中的代码匹配。

    显然.net代码很容易比较,因为我们可以反汇编。由于编译方式的原因,我认为在vb6 EXE中不可能做到这一点。

    谢谢

    6 回复  |  直到 17 年前
        1
  •  3
  •   AlePani    17 年前

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

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

        2
  •  0
  •   ChrisLively    17 年前

        3
  •  0
  •   Matt Dawdy    17 年前

    这对已经部署的项目没有帮助,但是如果您在每次编译时都增加了版本号(有一个项目设置自动为您执行此操作),那么您就可以轻松地比较版本号。

        4
  •  0
  •   Sarkie    17 年前

    我的老公司买了一个VB反编译器的副本,正如在VB5/6生成额外的P代码之前所指出的那样,该工具确实生成了一些代码,如果不是汇编代码,也可以“读取”。

        5
  •  0
  •   Kris Erickson    17 年前

    如果您拥有编译的所有代码,则可以将该代码的CRC与部署在该字段中的代码进行比较。但是如果您没有原始编译代码,这取决于您编译代码的方式(如果您使用的是P代码而不是本机代码,那么您可能可以反汇编,但反汇编看起来与您的源代码完全不同)。我怀疑您是否会将PDB与exe一起提供,但如果您提供了,您肯定可以使用它们与存储库中的源代码进行比较。

        6
  •  0
  •   RS Conley    17 年前

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