5

使用 RedGate 的 Reflector,您可以轻松获得应用程序的完整源代码。但是为了减少算法被发现的机会,有一些混淆器可以减少这种可能性。

我的问题是:

  • 混淆器的效果如何?
  • 在隐藏算法方面更安全的是:没有 .NET 库或混淆的 .NET 程序的 C++。
  • 还有其他方法可以使 .NET 源代码更加安全吗?
4

5 回答 5

4

如果您确实想保护某些东西,请选择 C++,因为在 .NET 世界中,有一个名为 de4dot 的强大反混淆器(参见此处:https ://github.com/0xd4d/de4dot ),它可以反混淆市场上大多数混淆器产生的内容, 事件它不明确知道的。

然而,这只会提高标准,因为即使在 c++ 世界中,也有强大的工具(IDA:http ://www.hex-rays.com/products/ida/index.shtml )。

还有其他解决方案,例如混合代码程序集,您可以在其中将要隐藏的部分隐藏在本机代码中,将其余部分托管。有关更多信息,请参见此处:混合(本机和托管)程序集

于 2012-08-25T08:56:54.080 回答
2

“在获取源代码方面更安全的是:没有 .net 库的 c++ 程序或 .net 混淆程序。” 没有.net ofc...

混淆的 .net .java 仍然很容易反编译。有专业的混淆器,这使得代码不可重新编译那些会减慢黑客过程的速度。

您是否听说过可以关闭可以打开的东西?即使写的是Assembly ...

通常初学者程序员都害怕这种盗窃。我建议首先创建一个软件部分,值得为他人窃取(而不是为您)

于 2012-08-25T08:13:56.143 回答
2

因为 .NET 被设计为自我描述的,所以使用混淆器只会阻碍他们的进步。尽管反编译器的可读性会降低,但任何了解 MSIL 的人都会有更好的机会。甚至 C++ 应用程序在某个阶段也将是可反编译的,因为程序最终会在内存中逐步执行。C++ 应用程序需要更长的时间来解决它,但如果黑客知道 Assembler(如果他们正在反编译您的应用程序以获得对算法的访问权限,他们可能会知道),这只是时间问题。

混淆实际上是在合理的时间跨度内使其尽可能困难,而不是让它变得不可能。相同的原则在于加密。加密并非不可能破解,只是需要很长时间,以至于上下文在 70 到 80 年内可能没有任何用处。

除了这里介绍的之外,我还可以想到 2 个替代方案:

  • 在远程位置托管算法
  • 将算法托管在硬件组件中 - 非常非常昂贵

如果您有可用的网络连接,第一个选项会更合适。处理在单独的服务器上完成,算法不向公众公开。这就是当今激活码的工作方式。生成某种序列代码,使用公钥加密进行加密,然后发送到将解密和验证数据的源。响应也被加密并发回。

此外,对您的应用程序和您的依赖项进行数字签名也将有所帮助,因为黑客无法很容易地插入组件。如果他们试图使用 DLL 代替您的旧的之一(伪造对服务的调用并返回“成功”),您的代码将在使用 DLL 之前检查数字签名。

所以总而言之,混淆会减慢这个过程,但不会阻止它。我能想到的唯一方法是将该算法托管在安全位置并向其发送请求。是的,托管方案、DoS 等存在问题,但您的算法受到保护,这正是您想要的。

于 2012-08-25T09:17:33.507 回答
0

试试这个链接。但是它只会混淆字符串。要混淆函数调用、变量和其他元素,请为此目的寻找商业产品和服务。

于 2016-01-04T18:01:28.730 回答
0

混淆器的效果如何?

我发现ConfuserEx名称常量控制流保护非常有效,使 .NET 代码难以阅读。

  • 使用 unicodeName protection可以将类/方法/等名称呈现为不可读的 unicode。
  • 编码常量字符串,constants protection如调试日志字符串,为黑客猜测代码在做什么提供了极好的提示。
  • control flow您的代码打乱成许多开关盒。

请参阅下面的 ConfuserEx'ed C# 代码示例:

在此处输入图像描述

在隐藏算法方面更安全的是:没有 .NET 库或混淆的 .NET 程序的 C++。

如果 .NET 程序集没有被混淆,那么这就像是放弃了源代码。

比较混淆的 .NET 和原生 x86/x64 代码,IMO,阅读它们的难度大致相同。可以使用 IDA-Pro 等软件将原生 x86 代码反汇编成可读性很强的 C 代码。还有一些人可以非常快速地阅读和理解 x86 语言。

还有其他方法可以使 .NET 源代码更加安全吗?

有这个Microsoft .NET Native(仍处于早期阶段,有限制)将 C# 代码编译为本机 x86/x64 代码。这实际上不是一种保护,只是人们阅读 x86 代码的速度变慢了。

于 2016-01-06T20:10:54.443 回答