防止.NET逆向工程/反编译

时间:2012-06-04 17:16:00

标签: c# wpf reflector

有没有办法阻止.NET Reflector在程序中运行?

例如:我正在开发一个包含机密数据的程序(如gMail地址和密码),我不希望有人看到它们。

我该怎么做?

3 个答案:

答案 0 :(得分:13)

有各种工具可以通过不同的技术来实现这一目标。

例如,许多商业混淆器除了加密字符串和混淆源之外,还会在IL中引入允许程序运行的东西,但是会破坏(大部分/全部)当前的逆向工程工具,如.NET反射器。

话虽这么说,在应用程序中保留这种类型的数据永远不会是安全的。工具可以做的最好的事情是使获取信息变得更加困难,但永远不会让它变得不可能。< / p>

一个“掩盖”它并打破混淆工具的工具仍然不完美 - 有足够的时间和精力,有人可以从你的程序中获取这些信息。如果运行时可以获得这些信息,那么有足够决心和驱动程序的人可以找到它。因此,密码等重要的私人信息不应保存在可执行文件中。

答案 1 :(得分:3)

是的,搜索'.NET obfuscator'。有几种工具可用。

但是,您不应该在代码中嵌入您的电子邮件用户名/密码。这是错的。放弃安全性,如果您需要更改电子邮件密码,您会怎么做?你可以升级软件的所有副本吗?

答案 2 :(得分:2)

混淆器倾向于提供很少的数据保护,例如您在应用程序中保留的数据。它们主要是为了保护代码和逻辑不被逆向工程,而不是文字。更好的方法是让您的客户端应用程序与服务器端应用程序通信,从而为其提供所需的数据,而不是让客户端直接与安全服务器进行协商。通过这种方式,您可以在服务器和客户端应用程序之间设置安全的加密方法。