2010-07-19 65 views
3

我在vb.net 2008(使用.net 3.5)中编写了一个程序。这是一个体面的大小程序。该程序的一部分是访问在线数据库并加密/解密文件。要访问数据库我使用硬编码的密码。为了加密/解密文件,我使用了硬编码密钥。无论我做什么,我都需要至少硬编码这两件事中的一件。例如:即使我将数据库密码存储在加密文件中,我也需要对密钥进行硬编码才能将其解密。或相反亦然。帮我选择.net混淆器程序?

因此,经过一番思考后,我想我需要混淆我的代码,以便至少这些硬编码的元素/值不会很容易看到。为了测试,我使用了一个程序来反汇编我的程序。令我惊讶的是,它向我展示了程序中的每一行代码。我觉得我的整个代码都粘贴在我的exe文件中。

因此,我需要混淆我的代码。看到我不需要太高级的设置。我的程序不是最受欢迎的共享软件程序,也不是我需要非常高安全性的超级流行程序。但我需要足够的安全性,以便我的基本代码,变量和敏感信息(密码等)不可见。

请帮我选一个好的混淆器来完成这项工作。它不应该使用太乏味,应该足够我。另外它应该是值得信赖和安全的。我的意思是我不希望我的应用程序在混淆后崩溃或不稳定。

我已经从Ezriz下载了.net reactor的试用版,它似乎很好。你们有什么建议?我不能超过200美元。那么这个产品是值得的。你们知道得更好。

感谢您的支持。

干杯, SAURABH

+0

重复:http://stackoverflow.com/questions/337134/what-is-the-best-net-obfuscator-on-the-market。 – greenoldman 2010-09-03 20:03:48

回答

18

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

另一种攻击是使用像ollydbg这样的调试器来获取内存中的用户名/密码。用户名/密码在使用前必须使用明文形式,攻击者才能找到它。

Security Through Obscurity将永远不会工作。你将永远无法控制客户端。

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

+0

我刚刚说完全一样的东西。使用WCF数据服务设置这个过程相对比较快速和容易,您应该查看它。 – 2010-07-19 06:49:10

+0

很好的建议。混淆并不是最终的解决方案(尽管它可以在最后增加一层额外的保护。) – Noldorin 2010-07-19 08:01:50

+0

同上。混淆只是对最常见的攻击提供保护。 – 2010-07-19 14:59:58

0

我用Eazfuscator:http://www.foss.kharkov.ua/g1/projects/eazfuscator/dotnet/Default.aspx

它功能强大,它是免费的。精彩的工具使用起来非常简单。

+0

谢谢你们。但是看到我不在乎攻击者是否全程进入。我想要基本中间安全。如果有人真的想破解它,无论如何他都会做。 关于我应该去的混淆器程序? 皮埃尔我会尝试Eazfuscator。它只是那个免费的一个足够好比其他像.net反应器等 – Saurabh 2010-07-19 11:17:10

+0

我使用Xenocode多年,和其他商业产品。当我发现Eazfuscator时,我无法相信这是免费的。我现在使用它2年,并且永远不会回到Xenocode。 – 2010-07-19 12:12:20

+1

@Saurabh混淆意味着帮助保护知识产权免受竞争对手的侵害。它从来不是为了保护客户端安全问题。我不知道是谁告诉你这会有所帮助,但他们错了。 – rook 2010-07-19 15:14:30

0

我使用Eziriz .NET反应堆一段时间了,它对我很好。我之前使用过Eazfuscator,但它并不是很强大。

.Net Reactor具有真棒功能,如Anti ILDASM和Native Exe文件生成。它也适合你的预算。您可以在购买之前使用Trial,并测试它是否适用于您的方案。

+1

我认为.net reactor会完成这项工作。但我发邮件给他们(一般查询)并没有得到他们的回复。这令人失望。 – Saurabh 2010-07-21 12:09:11

+0

我从来没有试图与他们沟通,但我看到很多抱怨。 – Qorbani 2010-07-21 16:05:49

+0

我希望如果我买我得到钥匙或任何即时解锁。我想要的最后一件事是被卡住,没有人回复我会陷入混乱。 – Saurabh 2010-07-21 16:52:57

1

你应该强烈地考虑Babel .net混淆器。在我看来,即使它是一个控制台应用程序,它对于价格,授权(不锁定到一台计算机)和功能来说是最好的。