保护dll免于在应用程序外使用

保护dll免于在应用程序外使用

问题描述:

我有一个dll库,我在其中一个项目中使用。我不希望别人能够链接和访问库中的方法。有没有可能保护它?谢谢!保护dll免于在应用程序外使用

编辑:有没有办法'隐藏'方法名称或使它们在dll内随机?

+0

是否有可能保护软件免遭黑客入侵?我想知道的方式:) – 2013-02-20 13:48:34

+0

重复的问题:http://*.com/questions/805461/how-to-protect-dlls – Tanner 2013-02-20 13:48:38

+0

这是尽可能的,以防止未经授权的人启动您的可执行文件。 – delnan 2013-02-20 13:48:43

您可以尝试通过要求一个密钥来限制它的使用。如果传递了错误的密钥,您的图书馆将无法工作。

然而,通过反编译你的应用程序并检查你提供的密钥并简单地使用相同的密钥,这可以很容易地避开。

另一种可能性是在每个公开课上为每个公共方法添加一个支票。该检查将验证调用程序集是你的一个。
根据此检查的实施情况,通过创建一个与您的其中一个名称相同的小型代理程序集很容易避开它。

一般情况:不可能阻止它。就像复制保护一样,如果对方可以访问你的程序集,所有的东西都可以绕过 - 我的意思是编译后的程序集,而不是源代码。

+0

它可以全部修改,我认为你的后一个想法是非常低效的。 – Lloyd 2013-02-20 13:49:51

+0

@劳埃德:请参阅更新的答案。我想你正在评论一个旧版本。 – 2013-02-20 13:51:11

简短的回答是没有。如果有人想访问你的图书馆,他们会找到一种方法。

然而,你可以混淆你的图书馆以使它们变得更难,但是没有防止它们的方法。

一种方法是Friend Assemblies 您可以标记您的程序集internal并且只有指定的程序集才能访问您的库。

但它只是禁止以“简单的方式”使用你的图书馆。

+2

您可以使用反射来访问这些类型。 – 2013-02-20 13:54:41

在第三方产品(如Sentinel Hasp)的帮助下,您可以保护您的库和可执行文件免受授权使用,但它会降低应用程序的性能,降低您的成本并且不保证没有人会破坏它。 但打破保护海盗应该努力工作。