3

对 .net 程序集进行反编译和反向工程是一种标准做法。

我想发布一些将添加到现有应用程序的插件程序集,但我不希望它们被其他人使用。

有哪些方法可以隐藏这些程序集的来源?

4

6 回答 6

14

除非您控制目标硬件,否则理论上不可能实现 100% 的保护。如果 CPU 能够执行它,只要有足够的时间和知识,人类也可以阅读它。这甚至不限于 C#(尽管在托管语言中通常更容易做到)。您可以使用 Dotfuscator 或 XenoCode 之类的混淆器来使反编译代码更难理解。如果你真的很担心,你应该转向基于服务器的应用程序。

于 2010-01-24T23:52:13.873 回答
2

您可以使用混淆器工具,它会有所帮助,但逆向工程仍然很有可能。

你的用户的计算机需要知道它需要做什么,所以你必须告诉它。计算机的拥有者可以完全控制它,因此他可以知道你告诉计算机做什么,并且他可以告诉它做其他事情。

于 2010-01-24T23:51:54.920 回答
1

有一种隐藏数据的方法,称为隐写术CodeProject上涵盖了许多文章的作者,他为此编写了一个框架。我认为文章的标题是从 1 到 12 的系列中的“隐写术”。这是作者附属的网站。

还有一个名为“Phoenix Protector”的混淆器,可以在这里找到,它可以混淆 .NET 代码,我个人没有尝试过,但听起来不错。

希望这会有所帮助,最好的问候,汤姆。

于 2010-01-25T01:03:54.713 回答
0

它是软件;一切皆有可能。您可以加密您的二进制文件,然后在运行时将它们全部或部分解密到您的应用程序中。这不是万无一失的,但由你决定你想变得多么严厉。

于 2010-01-24T23:51:50.940 回答
0

您可以使用 CLR COM api编写一个托管 CLR 的应用程序,这样您就可以首先在本机代码级别加载和解码程序集。如果您使用几种反逆向工程技术来加强本机加载程序,您可以获得足够好的安全性。

于 2010-01-25T00:07:18.907 回答
0

至少,您应该混淆您的 dll,以防止黑客和竞争对手查看和理解您的代码。混淆不是 100% 万无一失的,但它在他们的道路上提出了一个足够大的障碍。

某些混淆器(例如Crypto Obfuscator)具有将所有 dll 嵌入到主 exe 中的功能,因此您的 dll 不会显式可见并且可以在磁盘上以在逆向工程工具(例如 Reflector)中打开。

于 2010-05-29T05:30:23.100 回答