帮我选择一个 .NET 混淆器程序?

3
我已经用vb.net 2008(使用.net 3.5)编写了一个程序。这是一个相当大的程序。其中一部分是访问在线数据库并加密/解密文件。为了访问数据库,我使用硬编码密码。为了加密/解密文件,我使用了硬编码密钥。无论我做什么,至少需要硬编码其中之一。例如:即使我将数据库密码存储在加密文件中,我也需要硬编码密钥以进行解密。反之亦然。
因此,在经过一些思考后,我想我需要混淆我的代码,以便至少这些硬编码元素/值不容易被看到。实际上,为了测试,我使用了一个程序来反汇编我的程序。令我惊讶的是,它显示了我的程序中的每一行代码。我觉得我的整个代码都被粘贴在我的exe中。
因此,我需要混淆我的代码。我不需要太高级的设置。我的程序不属于顶级共享软件程序或超级流行,我不需要非常高的安全性。但是我需要足够的安全性,以便我的基本代码、变量和敏感信息(密码等)不可见。
请帮我选择一个好的混淆器,它可以完成这项工作。它不应该太麻烦使用,对我来说应该足够。此外,它应该是可信和安全的。我的意思是,我不希望我的应用程序在混淆后崩溃或不稳定。
我已经从Ezriz下载了.net反应堆的试用版,它似乎很好。你们有什么建议?我负担不起200美元以上的东西。那么这个产品值得购买吗?你们知道得更好。
感谢您的支持。
祝好, Saurabh

重复的内容:http://stackoverflow.com/questions/337134/what-is-the-best-net-obfuscator-on-the-market。请将该问题翻译成中文。 - greenoldman
4个回答

18

混淆无法解决这个问题。攻击者可以更改他的hosts文件,将域名重定向到他控制的数据库。当您登录时,他将获得用户名/密码。

另一个攻击方式是使用类似ollydbg的调试器来获取内存中的用户名/密码。用户名/密码必须在使用之前以明文形式存在,攻击者将能够找到它。

安全通过模糊性永远不会奏效。您永远无法控制客户端。

更好的方法是设置一个SOAP(WCF)服务器来抽象您的数据库操作。构建查询的逻辑必须在服务器端完成。假设攻击者完全可以访问您通过SOAP公开的任何功能。


我正想说同样的话。使用WCF数据服务设置这个相对快速和容易,你应该研究一下。 - John Leidegren
好建议。混淆并不是万能的解决方案(尽管它可以在最后增加一层保护)。 - Noldorin
同上。混淆只是对最普通的攻击提供保护。 - Wayne Werner

1
你应该强烈考虑使用Babel .net混淆器。我认为,尽管它是一个控制台应用程序,但就价格、许可证(不锁定到单个计算机)和功能而言,它是迄今为止最好的选择。

1

我现在已经使用Eziriz .NET Reactor有一段时间了,它对我来说非常好用。我以前使用过Eazfuscator,但它并不是很强大。

.Net Reactor拥有出色的功能,如反ILDASM和本地Exe文件生成。此外,它还可以适应您的预算。您可以在购买之前使用试用版,并测试它是否适用于您的情况。


1
我认为 .net reactor 可以胜任这项工作。但是我给他们发送了电子邮件(一般查询),但没有得到他们的回复。这让人失望。 - Saurabh
我从来没有尝试过与他们沟通,但我看到了很多关于此事的抱怨。 - Qorbani
我希望如果我购买了,能立即获得解锁的密钥或其他东西。我最不想遇到的事情就是被卡住,而没有人回复,这会让我陷入困境。 - Saurabh

0

谢谢大家。但是我不在乎攻击者是否能够完全进入系统。我只需要基本中级的安全性。如果有人真的想破解它,无论如何都会做到。关于混淆程序,我应该选择哪一个?皮埃尔,我会尝试Eazfuscator。只是这个免费的版本与其他的比如.net反应堆等相比怎么样? - Saurabh
我使用Xenocode和其他商业产品已经多年了。当我发现Eazfuscator时,我简直不敢相信它是免费的。我现在已经使用它两年了,再也不会回到Xenocode了。 - user333306
1
@Saurabh 模糊化旨在帮助保护知识产权免受竞争对手的侵犯,从来没有旨在保护客户端安全问题。我不知道是谁告诉你这将有所帮助,但他们非常错误。 - rook
我仍然想使用混淆器来保护程序中的基本内容,并确保其不被他人看到。我尝试了Eazfuscator,但它无法混淆我的程序。是否有其他好的混淆器? - Saurabh
系统找不到文件 <something>。这很奇怪。我的程序使用第三方dll,但它们在同一个文件夹中。 - Saurabh

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