首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >签名.NET程序集:这真的可以保护我的程序集不被篡改吗?

签名.NET程序集:这真的可以保护我的程序集不被篡改吗?
EN

Stack Overflow用户
提问于 2008-12-18 11:50:37
回答 4查看 6.7K关注 0票数 14

我正在我的应用程序中实现一个“锁定”系统,它保护我的应用程序不被非法复制和使用。系统检查基于硬件的代码的签名,并期望它使用只有我的公司拥有的私钥进行签名。(应用程序获得了验证签名的公钥。)

我想确保没有人改变我在应用程序中的锁定机制,所以我想签署我的应用程序的程序集,我认为这是有意义的。

  1. 因为我从来没有见过CLR提到程序集的签名无效,所以我想确保这个系统真的能工作。是吗?我该怎么做才能让它发挥作用?
  2. 攻击者能否将他的精力集中在CLR上,使它不关心我的签名?也就是说,如果他不能篡改我的代码,因为我已经签名了,他能篡改CLR吗?
  3. 一般来说,我想知道你对这种安全防护和保护技术的经验。还有人能提出其他建议吗?
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-12-18 12:02:44

程序集签名的目的是允许应用程序/程序集引用程序集,并确保它们获得了它们最初引用的程序集。如果有人愿意,理论上他们可以解压缩你的整个应用程序,不需要签名就重新编译。(例如:他们可以重新编译引用程序集,以便它引用引用程序集的未签名版本)。

然后,他们将能够修改他们想要的代码,因为客户端(exe)现在将引用一个未签名(或‘重新签名’) dll。

要使反编译和重新编译的过程更加困难,您可以尝试创建包含托管代码和本机代码的混合模式C++/CLI程序集。但对..。最终,人们有了你所有的二进制文件,只要付出足够的努力,你想出来的任何许可系统都可能会被绕过。

票数 12
EN

Stack Overflow用户

发布于 2008-12-18 12:29:26

对于签名的程序集有一定程度的误解。正如mackenir所指出的,程序集签名并不是用来防止程序集被篡改的安全机制。以下关于代码项目的文章很好地处理了这个主题:

http://www.codeproject.com/KB/security/StrongNameExplained.aspx

票数 6
EN

Stack Overflow用户

发布于 2008-12-18 12:00:51

签名您的代码只允许篡改检测,这并不能阻止它。知道自己在做什么的人可以删除你的签名,并在必要时添加他们自己的签名。

实际上,大多数拷贝保护方案都是浪费时间,可能会被颠覆,而且它们也会让你的付费客户感到烦恼。最终,您不能阻止某人在他们控制的硬件上修改和运行您的代码。只需使它足够困难,它更容易去采购部门和得到支票写,这是很难忘记,你没有许可证的副本。关心的人最终会付出代价,而不关心的人永远不会付出代价。

还要注意的是,即使你认为大多数人都不会破译你的计划,或者没有这样的技能,那也没关系。因为一旦一个人颠覆了你的拷贝保护方案,他们就可以在一个洪流网站上为那些没有技能的人提供它,这是游戏结束。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/377619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档