Confuser .NET混淆器,是否安全?

10

我正在开发一个应用程序,对于保护用户不将代码反编译非常关键。我知道大多数 .exes 在经验丰富的程序员执行后都可以被反编译。然而,我的目标只是让它远离具有基本编程知识的“普通”用户。

我尝试了几个混淆器,目前正在使用的是 Codeplex Confuser,你可以在这里找到它。由于我不是混淆方面的专家,也没有太高级的编程经验,所以想请问您是否了解这个混淆器的安全性。


那么您会建议我如何使软件代码无法访问?例如,我定义了洗牌加密方法和在某些文件中隐藏信息的方法。 - Fredrik
1
你为什么想要隐藏信息?如果你担心防篡改,可以研究一下公钥密码学(非对称加密)和数字签名。 - obataku
2
只是我的个人看法,混淆器不值得它们所写的字节。如果您有需要保密的数据或高度专有的代码,如果您想要保护它,那么您就走错了路。 - Maxim Gershkovich
这是更好的方式:http://www.remotesoft.com/salamander/protector.html - Jeremy Thompson
12
在我看来, Confuser 是安全的,并且会做你想要的事情。忽略那些抱怨“为什么要混淆你的代码,它仍然可以被破解”的人。你锁车了吗?是的?为什么?一个有技能的盗贼仍然可以进入。你锁前门了吗?是的?那么,一个小偷可以打破窗户。混淆您的代码也是一样的。这是为了让诚实的人保持诚实,并使熟练的小偷更加困难。 - Martin
显示剩余2条评论
2个回答

9

根据我的经验,目前来说,Confuser是最难(免费)的混淆器之一,并且至少无法通过一键工具轻松反混淆。

就我个人而言,在使用最高设置时,我遇到了一些假阳性和一些让我的 .exe 文件无法运行的情况。

请记住,即使相对于其他免费替代方案,它更难反混淆,但只要有人花费一点时间,仍然完全有可能实现反混淆。


这是.NET反编译器使用的内容(想想也知道)吗?因为在反编译器中打开它会给我一些随机的Unicode函数名称等。 - Cole Tobin
这很值得怀疑,因为对于那么大规模的程序使用免费混淆器只会给他们带来问题。你尝试过使用其他程序打开反编译器吗?ILSpy是一个不错的选择。 - denied66
是的,我尝试了ILSpy和IDA。两者都给我随机的(不是真正的随机,而是带有重音字符、符号等)函数和变量名称,就像它们只是随机字节数据一样(但在加载时保持一致,因此这是真正的变量名称),就像这样:call ...::Reflector.& - Cole Tobin
下载了试用版只是为了试试看。似乎他们正在使用SmartAssembly,我并不推荐,因为它非常流行,有许多工具可以反编译它。更不用说他们甚至为SA制作了一个工具(Dumbassembly)。 - denied66
@ColeJohnson Reflector使用商业混淆器SmartAssembly(由同一家公司Red Gate制作,该公司现在开发Reflector)。 - cdel
@cdel DumbAssembly 仍然无法解密函数名称。 - Cole Tobin

5
使用混淆器可以使反编译代码变得更加困难,但这仍然不安全。
保持代码安全的唯一方法是让用户无法接触到它。您可以将关键代码放在 Web 服务中,并让应用程序调用它。除非用户真正能够黑进服务器并获取代码,否则代码完全不会被反编译。

2
但是,OP说:“然而,我的目标只是让它免受具有基本编程知识的“普通”用户的攻击。” 在这种情况下,混淆完全符合要求。 - Martin
1
@Martin:是的,但他也说了防止用户反编译代码非常重要。大多数普通程序员可以使用免费的工具,并有机会掌握足够的代码,从而成为一个问题。 - Guffa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接