混淆 .NET Web 应用程序

Posted

技术标签:

【中文标题】混淆 .NET Web 应用程序【英文标题】:Obfuscating a .NET Web application 【发布时间】:2008-12-10 16:33:07 【问题描述】:

是否可以?我尝试使用 Visual Studio 2005 附带的 Dotofuscator 工具,并且能够混淆预编译网站的 dll,但是当我将灵魂部署到 IIS 服务器时,我无法访问应用程序的页面。

所以问题是:你们中的任何人都能够混淆一个完整的 .NET Web 应用程序吗?

感谢您的回答

编辑:我混淆了 bin 文件夹中的所有 dll。该站点是在不允许更新 aspx 文件的情况下构建的。之后当我转到http://serveradress/main.aspx 时,我收到一条错误消息,提示 main.aspx 不存在

PD:我需要对代码进行模糊处理,因为应用程序会执行一些许可证检查,并且我想让删除许可证检查代码变得更加困难

【问题讨论】:

究竟是什么你在这里没有成功混淆? .aspx、.ascx 等文件?网站DLL?您是在谈论嵌入在标记文件中的支持代码吗? 【参考方案1】:

请记住,如果您混淆了使用反射的应用程序,它可能会导致问题。

我个人认为没有必要进行混淆,因为真正想要查看您的代码的人,无论您是否混淆,都会努力得到它

【讨论】:

但是稍微难一点会阻止 95% 的人进去偷看或偷东西,这比让任何人把手伸进你的饼干罐要好! 我不认为混淆真的让它变得更难。这就像阅读名称非常糟糕的代码。我看到的唯一好处是字符串加密。现在你必须做一些脚力来解密它们。 您曾经在一个应用程序上使用过反射,其中有数百个类都以不可打印的字符命名?这往往会使事情变得更加困难反射反射器并看看。【参考方案2】:

其实可以的。你混淆了dll。问题是,您必须排除重命名许多类,继承 System.Web.UI.Page、UserControl 的类,并且您还必须排除 HttpAplicattion。 一些混淆器,如 BitHelmet Obfuscator (http://www.bithelmet.com) 和 DeepSea (http://www.deepseaobfuscator.com) 提供“智能排除”,因此您不必手动执行。

【讨论】:

【参考方案3】:

确保您在混淆软件中使用库设置。如果你不这样做,你所有的类和方法都会被重命名。

【讨论】:

【参考方案4】:

如果您可以找到 aspx 文件的代码隐藏类的混淆名称,那么您可以使用新的命名空间和类名设置继承属性。您可以使用 Reflector 并仅通过方法声明进行查询,或者您的混淆程序可能会输出 old_name - obfuscated_name 列表。

【讨论】:

以上是关于混淆 .NET Web 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Web Api 中的 Swashbuckle 被嵌套控制器混淆

利用proguard对java web工程代码混淆

使用 Proguard 在 dist 上混淆 Play 2 Web 应用程序?

正确支持WPF的混淆器

Asp.Net生命周期

使用.NET Reactor 5进行程序混淆,防止源码泄漏