3

在我的一个 .NET 应用程序中,我必须将我的程序“验证”到带有许可证密钥的库中。
但是每个偷看我的程序集的人都可以得到密钥......
这不会影响我,但我确实关心图书馆的创建者。
我不希望“泄露”他/他们的钥匙并造成他/他们这样的损失......

是否有任何免费工具可以用来保护我的数据?
我真的不在乎其他代码...关键很重要。

4

7 回答 7

4

如果您必须将其传递到库中并且您不控制库,那么您无论如何也做不了太多。您可以随意混淆您的代码以阻止 Reflector 用户(但不是 Reflector VSPro,至少不容易),我将使用Crack.NET 窥探内存并从那里获取它。

库创建者的工作是提供一种安全机制,例如使用公钥/私钥、SecureStringDPAPI或需要网络调用以将密钥存储在服务器上。

于 2011-07-26T16:53:55.713 回答
1

我能回忆起的唯一方法包是 dotnetfuscator 用于 ubfuscating 代码,但这不能免受专家逆向工程的影响。这个话题是 C# 开发人员的痛点,唯一真正做到这一点的方法是不使用 .net(根本没有答案)

问题211849中列出了其他一些

于 2011-07-26T16:50:40.167 回答
0

做这个和其他事情的另一个产品:来自 RedGate 的 SmartAssembly(虽然不是免费的)......

没有绝对的安全——尤其是。使用 JITted 代码(如 IL/.NET 和 Java)...

虽然要注意字符串常量——它们需要用“ static readonly”字符串替换......否则它们不能被“混淆/加密”......

于 2011-07-26T16:53:47.083 回答
0

我也有同样的情况。密钥存在于我的代码中。我不会混淆代码。我想这是因为我的大部分用户不是程序员,也不知道如何反编译代码并获得关键。如果我担心,那么我想我会按照上面的建议进行混淆

于 2011-07-26T16:56:07.317 回答
0

我会以不同的方式看待这个问题。

如果图书馆需要许可证来验证;那么您是否拥有在您的应用程序中分发该库的正确许可?

如果是这样,那么我会说由图书馆提供商向您提供如何正确保护密钥的说明。

否则,请使用代码混淆器尽力而为。

于 2011-07-26T16:56:11.207 回答
-1

Dotfuscator 可以为您做到这一点。我相信它与 Visual Studio 一起打包 - 查一下。

不过我不会担心它;如果您不是他们唯一的客户,那么很可能其他人正在通过未混淆的代码泄漏许可证密钥,从而使您的努力浪费时间。

于 2011-07-26T16:48:14.267 回答
-1

MSDN 上有一个代码混淆器列表

于 2011-07-26T16:52:46.770 回答