我写了一个我不希望其他人能够使用的程序集.我的程序集使用强名称密钥文件进行签名,但是如何保护代码以便只有使用相同密钥签名的其他程序集才能调用此程序集中的成员?
有一些选项,没有一个非常有效,因为它们只会使事情变得有点困难,但不会阻止已提交的用户解决任何限制:
在每个入口点上,可以调用Assembly.GetCallingAssembly()并将结果与允许调用库的程序集列表进行比较,否则抛出异常.
您可以使用像ilmerge这样的工具将程序集合并到主应用程序中,并将所有内部组件标记为私有.与混淆器结合使用可以更好地保护结果.
但是,保护程序集与保护攻击者可以物理访问计算机的计算机一样可靠:只有在授予物理访问权限后才能保护内容.