我正在我的应用程序中实现一个“锁定”系统,它保护我的应用程序不被非法复制和使用。系统检查基于硬件的代码的签名,并期望它使用只有我的公司拥有的私钥进行签名。(应用程序获得了验证签名的公钥。)
我想确保没有人改变我在应用程序中的锁定机制,所以我想签署我的应用程序的程序集,我认为这是有意义的。
发布于 2008-12-18 12:02:44
程序集签名的目的是允许应用程序/程序集引用程序集,并确保它们获得了它们最初引用的程序集。如果有人愿意,理论上他们可以解压缩你的整个应用程序,不需要签名就重新编译。(例如:他们可以重新编译引用程序集,以便它引用引用程序集的未签名版本)。
然后,他们将能够修改他们想要的代码,因为客户端(exe)现在将引用一个未签名(或‘重新签名’) dll。
要使反编译和重新编译的过程更加困难,您可以尝试创建包含托管代码和本机代码的混合模式C++/CLI程序集。但对..。最终,人们有了你所有的二进制文件,只要付出足够的努力,你想出来的任何许可系统都可能会被绕过。
发布于 2008-12-18 12:29:26
对于签名的程序集有一定程度的误解。正如mackenir所指出的,程序集签名并不是用来防止程序集被篡改的安全机制。以下关于代码项目的文章很好地处理了这个主题:
http://www.codeproject.com/KB/security/StrongNameExplained.aspx
发布于 2008-12-18 12:00:51
签名您的代码只允许篡改检测,这并不能阻止它。知道自己在做什么的人可以删除你的签名,并在必要时添加他们自己的签名。
实际上,大多数拷贝保护方案都是浪费时间,可能会被颠覆,而且它们也会让你的付费客户感到烦恼。最终,您不能阻止某人在他们控制的硬件上修改和运行您的代码。只需使它足够困难,它更容易去采购部门和得到支票写,这是很难忘记,你没有许可证的副本。关心的人最终会付出代价,而不关心的人永远不会付出代价。
还要注意的是,即使你认为大多数人都不会破译你的计划,或者没有这样的技能,那也没关系。因为一旦一个人颠覆了你的拷贝保护方案,他们就可以在一个洪流网站上为那些没有技能的人提供它,这是游戏结束。
https://stackoverflow.com/questions/377619
复制相似问题