如何从de4dot或类似工具保护.NET可执行文件?

时间:2013-01-29 10:10:13

标签: deobfuscation

我曾尝试使用以下混淆器进行混淆,但没有一个是成功的 de40工具[https://bitbucket.org/0xd4d/de4dot/]

看到这是多么容易真的很痛苦..只需将defodated .net exe拖到de4dot.exe上,你就会得到源代码..

混淆器尝试的是:

Agile.NET(又名CliSecure) Babel.NET CodeFort CodeVeil CodeWall CryptoObfuscator DeepSea混淆器 Dotfuscator的 .NET Reactor Eazfuscator.NET Goliath.NET ILProtector MaxtoCode MPRESS 临检 Skater.NET SmartAssembly Spices.Net Xenocode

一切都没用..那真是令人沮丧......

您能否提供更好的解决方案来防范此工具?

5 个答案:

答案 0 :(得分:12)

de4dot将很快与大多数混淆器/保护器兼容,如果没有,还会有其他东西。

我要做的是从codeplex下载Confuser并使用其中的高级功能选项卡。

我做的总是有效且无法逆转,是我:

在confuser中混淆“高级”中的“减少元数据”。然后,我 使用RPX打包器压缩组件。然后,我 在压缩程序中将压缩程序集与“资源加密”重新混淆。

这使得装配几乎完全不可逆转(总有那些人是好的破解者)。我还建议在源代码中为字符串添加md5 / sha-1加密。

通过所有这些保护方法,我正式说你的.net程序集受到严格保护。

答案 1 :(得分:2)

我遇到了同样的问题,直到现在还无法解决。我关注一些混淆器的发布。我检查了最新版本的ILProtector已经发布,所以我尝试了它来保护.NET可执行文件,并且可以说ILProtector绝对可以对抗de4dot。 de4dot无法反编译受保护的程序集。

答案 2 :(得分:2)

就像今天一样,De4dot的最后一个版本似乎也可以对ILProtector进行去混淆。

来自Secureteam.net的Agile.net代码保护说Defeats de4dot和其他反混淆器,但我还没有尝试过。我在测试后立即编辑我的答案。

答案 3 :(得分:1)

最好尝试使用您自己的自定义包装机进行包装。所有商用包装机都可以由一个或其他拆包机反编译。

祝你好运。

答案 4 :(得分:0)

我今天检查了4-5个混淆器。混淆器的主要目的不是隐藏您的许可证代码,而是保护您的软件/算法,防止程序员仅通过查看代码即可轻松编写它们。因为如果可以轻松地对Windows,SQL Server,Adobe等任何软件进行黑客攻击,那么就没有机会隐藏许可证代码。就我而言,我开发了一些C#软件,如果有人可以在按钮单击事件内访问其代码,则可以轻松复制这些软件。因此,我测试了一些实现“代码流混淆”的混淆器,这使得很难理解代码的执行流/算法。实际上,当我在软件上执行“代码流混淆”时,我无法理解我的代码本身,更不用说其他人可以理解的内容了。

您刚刚花了几周的时间开发了可以完成某些任务的算法,例如:您可以从所有网站获取机票并在软件中显示。如果某人可以看到它的代码,则他/她一天之内就可以创建相同的软件。因此,最好以一种使任何人都难以理解的方式混淆算法。

我尝试过:Dotfuscator,Eziriz .NET Reactor和Crypto Obfuscator和rustemsoft Skater .NET Obfuscator。 (还有其他一些人)

以下是我的结果:

  1. 所有混淆器对所有字符串/变量/函数的加密都可以通过de4dot混淆器轻松进行混淆。因此,对字符串/变量/函数进行加密没有任何意义。
  2. 我为所有3个设备使用了最高级别的“代码流混淆”。我无法使用rustemsoft Skater .NET,因为它的软件挂起了很多并且用户界面让我感到困惑。而且免费/评估版没有启用“代码流混淆”来评估。因此,Dotfuscator进行了最好的代码整理。然后.NET Reactor和Crypto Obfuscator处于同一级别,但是它们的混淆远不如Dotfuscator。
  3. 您可以尝试使用虚拟化软件对软件进行虚拟化,该虚拟化软件应避免使用de4dot进行直接反混淆处理,但是再次可以使用任何好的拆包器轻松解压缩exe,然后可以使用de4dot对提取的程序集进行反混淆处理。虚拟化软件用于将主要exe,dll和其他资源打包到一个大exe中,因此您不必创建安装文件等,即可在任何计算机上直接运行exe。因此,在这种情况下,您可以在单个加密的exe中对.NET程序集进行加密。但是,就像我说的那样,它很容易拆开。 YouTube上有很多与此主题有关的视频。它没有做“控制流混淆”,这是我的主要目的。

所以,最后我要做的是:

使用Dotfuscator对控制流进行模糊处理,然后再次使用.NET Reactor或Crypto Obfuscator对“控制流”进行模糊处理。在此之后,如果我对exe进行混淆处理,则任何中级程序员都无法理解该代码。