由于您只关心普通用户盗用您的产品,我建议您查看像flexlm这样的许可证管理器。只需确保dll本身连接到许可证服务器,以确保产品是许可的,而不是exe。
对于直接安全
最简单的方法是使您的非托管C DLL具有内置的许可机制,从根本上使它对第三方开发人员无用,否则他们可能会将库导入到他们自己的托管或非托管代码中。
有许多技术可以做到这一点,例如从Windows注册表中读取许可证密钥或添加特殊密钥 ActivateLicense(string key) 函数用于在使用库的其他函数之前从C#托管应用程序调用的DLL。
ActivateLicense(string key)
生成和接受许可密钥的具体过程取决于您,但在纯脱机环境中,没有100%安全系统( 软件许可证密钥是如何生成的? )。
通过Obscurity实现额外安全
这些剩余的选项只是额外的提示和技巧,使竞争对手更难以进行逆向工程,但不提供真正的安全性: