源代码混淆

5

我知道这是一个奇怪的请求,但我需要混淆原始c#源代码。

虽然这是一个坏主意,但是c#代码将通过CSharpCodeProvider在客户端编译。是否有现成的c#类可以混淆源代码?或者,有第三方库可以实现这一点吗?

我考虑使用Roslyn和手动变量重命名,但我找不到任何关于如何执行的信息。有人知道如何使用Roslyn重命名变量(并加载解决方案)吗?

我尝试过手动语法分析器,但效果不佳。

目前为止我做了以下事情:

删除了所有注释。

删除所有换行符和空格。

将来自所有不同项目的所有文件放入一个文件夹中,并使用随机的25个字符的字母数字名称。

在代码行中间添加随机注释。这不会阻止任何人,但让我头疼的阅读 public /*SJKDSJKDJ398sLAjljKKxklw*/int /*SDSDSJCJKIORIO*/ privateServerKey = /*SDKSDKSDFKJSFKJ*/ ...


你试过谷歌搜索吗?因为已经有很多答案了。 - user3036342
1
顺便说一下,我在谷歌上搜索并找到了http://www.sourceformat.com/obfuscate-code-csharp.htm,但是如果你将其复制到VS中进行格式化,你会发现它不太混淆..(我猜移除空格就是混淆的) - Prescott
18
让我的一些同事为您撰写这篇文章。 - Jodrell
除了Roslyn之外,是否有任何C#解析器可用?如果不需要手动解析,我可以进行混淆。 - Colorfully Monochrome
1
如果您确实要走解析和转换C#的道路,我强烈建议您使用Roslyn。这是唯一一个您可以确定与(未来的)C#编译器完全兼容的解析器。 - Kris Vandermotten
显示剩余4条评论
1个回答

3
有些奇怪吗?不是的。有时候,我们需要向第三方发送可编译源代码,而又不希望第三方轻易地理解源代码。我们会认为混淆器并不能使代码无法理解,但这并不重要。你家的前门锁也阻止不了严重的盗贼,但如果你有一所房子,没有一个门锁你就是傻瓜。

我们的C#源代码混淆器可能可以满足您的需求。

它主要是以安全的方式对标识符进行混淆。代码库越大,效果越好。

它还会去除空格和注释以损害可读性。它不会在不同目录之间随机移动代码文件。


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