代码之家  ›  专栏  ›  技术社区  ›  iLemming

如何创建防篡改安装

  •  3
  • iLemming  · 技术社区  · 14 年前

    我不知道它通常是怎么工作的,所以请告诉我在哪里挖掘。。

    我需要创建一个防篡改的应用程序安装文件。基本上,如果由于某种原因安装文件被更改了,应该告诉它,并阻止任何进一步的安装。

    有没有可能将这些东西嵌入到CustomActions安装程序模块中?

    7 回复  |  直到 14 年前
        1
  •  0
  •   Dave McClelland    14 年前

    如果您只需要验证.exe文件是否已正确分发,请在自己编译该文件后计算该文件的md5哈希值,然后让用户在获得该文件的哈希值时比较其副本。如果散列匹配,那么文件应该是未损坏的。

    要计算文件的哈希值,请签出 this tutorial . 我个人还没用过,但对你来说应该是个好的开始。

        2
  •  4
  •   Matthew Flaschen    14 年前

    您可以很容易地检测到不经意的损坏,但这与防篡改不同。

        3
  •  2
  •   Freiheit    14 年前

    如果我没记错的话,vs2010安装包会创建一个InstallShield安装包。你要做的是对那个包裹进行数字签名。

    1) 找出实际的安装程序应用程序是什么。很可能是InstallShield如果您使用的是VS,那么除了InstallShield之外还有其他选择。 3) 请阅读install builder应用程序中的说明,以了解如何对其软件包进行签名

    您可能需要从Verisign这样的安全供应商处购买验证。未经验证的签名文件并不比签名文件好多少。

    下一个最好的选择是对文件(通常是MD5)进行校验和,并建议安装您的软件的人在运行该文件之前,对其进行检查。

        4
  •  2
  •   Community CDub    7 年前

    Authenticode . 它是Windows的一个集成部分,对安装程序的EXE进行数字签名可以确保它在您和用户之间没有被篡改。

    但是,数字签名的EXE 不会 如果签名无效,将阻止运行。为此,安装程序应该 validate its Authenticode signature .

        5
  •  0
  •   GrandmasterB    14 年前

    大多数安装系统将为您处理此问题。他们将检查安装程序的哈希,以确保它没有被修改。如果您使用的是一个像样的安装程序系统,那么您通常不必特意去实现它。

        6
  •  0
  •   the_mandrill    14 年前

    解决方案的复杂性将取决于您是否要检测文件是否与您构建的文件不同,或者应用程序是否在第一次运行时创建文件(因此应用程序不会事先知道哈希是什么)。如果第一个是你想要的,那么一个选择就是 sign 认为

        7
  •  0
  •   iLemming    14 年前

    是 啊。。我决定在安装项目的预构建事件中放置一些可执行文件,然后.exe将解析.vdproj文件,获取安装中涉及的每个文件名,计算其哈希值,并将这些信息保存到一个编码文件中。

    然后在我的CustomActions库的OnInstall方法中,将对该文件进行解码并比较所有散列(此时所有文件都已解压到temp文件夹中)。 如果出现问题,安装程序将停止,所有临时文件将被删除。瞧,我们有简单的食谱。当然,CustomActions库总是有可能被逆向工程,但我不会把它带给我的老板,我想即使这很重要,我也可以用模糊器来安抚他。