比较VB6.exes

时间:2008-10-06 15:16:18

标签: vb6 migration compare

我们正在进行大规模迁移项目,并尝试验证部署到动态区域的代码与源代码控制中的代码相匹配。

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

有没有人对如何验证源代码有任何想法,而编译的可执行文件与我在Live中的文件匹配。

由于

6 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

如果您拥有编译的所有代码,则可以将该代码的CRC与该字段中部署的代码进行比较。但是如果你没有原始的编译代码,取决于你编译代码的方式(如果你使用P代码而不是本机代码,你可能可以反汇编,但反汇编看起来不像你的源代码)。我怀疑你是否会将这个PDB与exe一起发布,但如果你这样做了,你当然可以使用这些来与你的存储库中的源代码进行比较。

答案 5 :(得分:0)

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

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