在我的一个.NET应用程序中,我必须使用许可证密钥将我的程序“验证”到库中 但是每个偷看我的装配的人都能获得钥匙...... 这不会影响我,但我确实关心图书馆的创作者 我不希望“泄漏”他/他们的钥匙并导致他/他们这样的损失......
是否有可用于保护我的数据的免费工具?
我真的不关心其他代码......关键很重要。
答案 0 :(得分:4)
如果你必须把它传递到图书馆,如果你不控制图书馆,那么你无论如何都做不了多少。您可以模仿您的代码以阻止Reflector用户(但不是Reflector VSPro,至少不容易),我只需使用Crack.NET来查看内存并从那里抓取它。
图书馆创建者的工作就是提供一种安全的机制,例如:使用公钥/私钥SecureString,DPAPI或要求网络电话将密钥存储在服务器上。
答案 1 :(得分:1)
我能回忆起的唯一方法是使用dotnetfuscator代替ubfuscating代码,但这并不能免于专家的逆向工程。对于C#开发人员来说,这个主题是一个痛点,唯一真正的方法就是不使用.net(根本就没有答案)
中列出了其他一些内容答案 2 :(得分:0)
Dotfuscator可以为您完成此操作。我相信它与Visual Studio一起打包 - 查阅它。
我不担心它;如果您不是他们唯一的客户,那么其他人可能会通过未经混淆的代码泄露许可证密钥,这会让您的工作浪费时间。
答案 3 :(得分:0)
老实说,我不在乎。如果在某些时候,你需要将关键字作为参数传递给该库中的某个东西,那么你试图对它进行模糊处理无关紧要,那些偷看你代码的人最终会找到密钥。只是责怪图书馆的提供者:)
答案 4 :(得分:0)
答案 5 :(得分:0)
另一个产品和其他产品:RedGate的SmartAssembly(虽然不是免费的)......
没有绝对的安全 - 尤其是使用JITted代码(如IL / .NET和Java)......
虽然要小心字符串常量 - 但需要用“static readonly
”字符串替换它们......否则它们不能被“混淆/加密”......
答案 6 :(得分:0)
我有同样的情况。密钥出现在我的代码中。我不混淆代码。我想这是因为我的大部分用户不是程序员,也不知道如何反编译代码并获得密钥。如果我担心,那么我认为我会像上面建议的那样混淆
答案 7 :(得分:0)
我会以不同的方式看待这个。
如果图书馆需要许可证才能验证;那么您是否拥有在您的应用程序中分发库的正确许可?
如果是这样,那么我会说由图书馆提供商为您提供如何正确保护密钥的说明。
否则,使用代码混淆器尽力做到最好。