2012-08-28 34 views
8

我目前正在开发一个应用程序,让用户避免反编译代码非常重要。现在,我意识到如果一个有经验的程序员执行,大多数.exes都是可以反编译的。然而,我的目标仅仅是保持它对基本编程知识的“常规”用户的安全。Confuser .NET混淆器。它安全吗?

我遇到过几个混淆器,我现在使用的是Codeplex Confuser,它可以找到here。由于我不是混淆专家,或者是在任何高层次编程中经历过的,所以我问你是否知道这个混淆器的安全性。

+0

那么你会如何建议我让软件的某些代码无法访问?比如我在哪里定义了洗牌加密的方法,并在某些文件中隐藏信息。 – Fredrik

+1

你为什么要隐藏信息?如果您担心防篡改,请查看[public-key cryptography](http://en.wikipedia.org/wiki/Public-key_cryptography)(非对称密码)和[数字签名](http:// en .wikipedia.org /维基/ Digital_signature)。 – oldrinb

+0

看看这个问题:http://stackoverflow.com/questions/2478230/how-can-i-protect-my-net-assemblies-from-decompilation – niaher

回答

8

从我的经验来看,Confuser是目前最难倒转的(免费)混淆器之一。至少通过单击工具。

就我个人而言,我有几个问题,即使用最大设置和一些使我的.exe无法运行的情况下的一些误报。

请记住,不管是否比其他免费替代品有点难以逆转,如果他花了一点时间,仍然有可能这样做。

+0

这是什么被.NET反射器使用(去图)?因为在反射器中打开它会给我随机的unicode函数名称,例如 –

+0

令人怀疑,因为使用免费的混淆器处理这样大小的程序只会导致它们出现问题。你有没有尝试过使用不同的程序来打开反射器? ILSpy是一个很好的选择。 – denied66

+0

是的,我试过ILSpy和IDA。它们都给了我随机的(不是随机的,但有重音的字符,符号等等)函数和varialbe的名字,就像它们只是随机的字节数据一样(但是通过加载来保持一致,所以它是真正的变量名,像这样:'call ...: :Reflector。&' –

4

使用混淆器会使代码反编译困难得多,但它仍然不安全。

确保您的代码安全的唯一方法是让它不在用户的手中。您可以将关键代码放入Web服务中,并让应用程序调用它。除非用户实际上可以破解服务器并获取代码,否则反编译完全是安全的。

+2

确实如此,但是OP表示:“但是,我的目标仅仅是通过基本的编程知识来保护它不受”常规“用户的影响。”在这种情况下,模糊处理完全符合法案 – Martin

+1

@Martin:是的,但他也表示,保持用户反编译代码至关重要。大多数普通程序员可以使用免费提供的工具,并有机会掌握足够的代码,使其成为问题。 – Guffa