强名称程序集有多难被篡改?

5
假设我有一个已经签名的.NET程序集,并且只有我拥有私钥。然后我将程序集分发给某些客户端系统。
客户端要修改这个程序集有多难?也就是说,他们需要做什么才能修改我的程序集?
3个回答

15

Strong-naming(强命名)不能防止修改程序集,但它可以防止引用强命名程序集的其他应用程序无意中使用已修改的版本。


1
当然,其他应用程序也可以进行修改以消除强链接的要求。 - Barry Kelly
1
@Barry 因此才有了“无意中使用”的部分。如果您修改引用,那就不是无意的了 :) - Rex M

0

这与修改非强类型程序集没有什么不同。唯一的真正区别在于,他们必须运行强名称实用程序(sn.exe)才能使用修改后的程序集。


通常私钥不会与程序集分发,因此强名称它仍将使其与程序集的客户端不兼容,这些客户端在其程序集引用中嵌入了公钥。对于他们来说,修改客户端以移除强名称要求将更容易。 - Barry Kelly
抱歉,我是指这个意思。他们会使用 sn.exe 命令,并加上 -Vr 选项来绕过强名称要求。 - Chris Conway

0

就像其他人所说的一样,这很容易。

您可以使用程序集的公钥(或令牌)对程序集中的重要信息(如算法参数、连接字符串等)进行加密。这样,如果公钥已更改或删除,则解密将失败,程序集将无法正常运行。加密混淆器(如Crypto Obfuscator)将此技术作为保护的一部分。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接