如何确保C#确保完整性?(DLL未修改)

时间:2013-09-09 04:51:27

标签: c# winforms digital-signature intellilock

我有一个C#应用程序。当它在pakage之前发布时,我使用IntelliLock加密它。并使用startssl数字签名。(实际上我不知道如何使用它,是否有可能使用它来验证DLL?)

但是我仍然担心这个问题:有1或2个dll使用检查使用身份,而且非常小。我担心它会被修改并替换为同名。然后申请不会检查身份。

所以我的问题是,在IntelliLock和startssl数字烧录步骤之后有没有办法检查dll是不是被修改了?

非常感谢你。

1 个答案:

答案 0 :(得分:0)

我相信你最好的方法是尝试从DLL加载字节并计算校验和。校验和是基于预先计算的值表的文件中字节的累积计算。校验和可以使用库或您自己的实现来计算。我会读取文件内容然后计算一个校验和。

您需要通过网络或通过引用本地存储的值来验证该值。一些人能够绕过这个并修改你的文件的方法是运行你的应用程序,反编译并找出如何计算校验和,修改DLL,然后更改本地存储的校验和以匹配。在服务器上使用webAPI来验证校验和可能是最安全的方法。

有些人使用MD5作为校验和,如下所示: Calculate MD5 Checksum

有足够的信息让你从这里开始: Generating a checksum for a file