我应该担心模糊我的.NET代码吗?

Joh*_*bly 25 .net obfuscation

我相信SO上的很多读者都使用Lutz Roeder.NET反射器来反编译他们的.NET代码.我很惊讶我们的源代码可以从编译的程序集中重新编译.

我有兴趣听听你们中有多少人使用混淆,以及使用什么类型的产品?

我确信这是一个更重要的问题,例如,您提供的通过互联网下载的.NET应用程序,而不是针对特定客户端定制的内容.

Chr*_*nch 20

我不会太担心它.我更愿意专注于推出一款出色的产品,获得良好的用户群,并妥善处理您的客户,而不必担心用户窃取您的代码或查看源代码的最小比例.

  • @marcolopes:私钥永远不应该与应用程序一起交付......你可能意味着公钥......密码应该是哈希的,不管是不是明文...... (2认同)

Mar*_*tin 10

请记住,混淆不是加密.恕我直言,如果有人认为反向工程代码的价值,他们就会这样做.这对托管代码或本机代码来说都是如此,无论是否混淆.当然,混淆会阻碍不经意的观察者,但你的企业是否真的受到这些人的威胁?我见过的每一种.NET混淆方法都会让你的开发人员的生活变得更难.

有些服务提供真正的加密,例如Microsoft的SLPS.请访问http://www.microsoft.com/slps/default.aspx


Mar*_*tin 7

我们目前对我们的所有输出进行了模糊处理,即使我们是一个向少数客户销售专业软件的小型服装.

我们做出这个决定有一个简单的原因 - 我们发现一个心怀不满的前雇员正在积极地接近我们的客户请求二进制文件 - 有些人担心他打算对新功能进行逆向工程以提供竞争功能.

当然,如果他使用该软件,他仍然可以做到这一点,但没有理由让他轻松.


Kei*_*ith 5

没有新的混淆,但自1.1以来有很多编译器技巧

例如,每次使用匿名类型时,都会获得IL,并使用一个非常模糊的名称进行编译.每次使用yield都会得到一个全新的类,它实现了IEnumerable和IEnumerator(聪明的优化,不可读的代码).每次使用匿名委托时,您都会得到一个新方法,其名称在我知道的每种.Net语言中都是无效的,但在IL中这很好.