混淆 .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 被嵌套控制器混淆