【问题标题】:Manually obfuscating code?手动混淆代码?
【发布时间】:2011-05-14 21:20:54
【问题描述】:

对于将我的所有类、属性、方法等重命名为 ______ 之类的内容,您有何看法?这与 C# 混淆器(如 Dotfuscator 或 Eazfuscator)对我的应用程序所做的工作有多接近,以及我还可以手动做什么(在合理的时间内)以使我的代码尽可能地混淆?我想这样做的原因是因为混淆器会弄乱我的数据绑定,并且因为它们不会混淆使用 ClickOnce 发布的应用程序(除非我用清单和其他我不知道该怎么做的东西做一些专家的东西并且似乎没有人真正知道它是否总是有效)。

【问题讨论】:

  • 我认为这似乎需要大量的工作。
  • 那里有很多混淆器。你确定没有一个能满足你的需求吗?手动混淆非常容易出错...
  • 我很遗憾开发者会维持这样的怪物。一段时间后,它肯定会在 theDailyWTF.com 上发表一篇很棒的文章。
  • 听起来像是刚刚被解雇的人的一个非常卑鄙的“离开礼物”:)
  • 在非混淆版本上修复它并再次混淆。我可能可以为此制作一个宏。我不经常发布(和混淆)我的应用程序。

标签: c# .net obfuscation


【解决方案1】:

您应该混淆您的应用程序。为了避免任何数据绑定错误,许多混淆器现在提供silverlight / wpf 混淆默认值,这将帮助您避免这些错误。 混淆后,您可以使用 mage.exe 制作 clickonce 安装程序
http://msdn.microsoft.com/en-us/library/xc3tc5xx.aspx
请认真不要重命名。你让你的生活变得更加困难。事实上,你不想窃取你的代码和他们一样困难。
它只是一个 bat 文件,可在构建后单击一次。

【讨论】:

  • 一个简单的设置来禁用类/方法名重命名就可以了。混淆器仍然会:混淆方法内的代码。还有一些设置(例如包装在本机 Executable 中)会使您的代码无法在反射器中打开(这是窥探使用的主要工具)。
  • 我只想指出,Dotfuscator 的商业版本可以轻松混淆您的 ClickOnce 应用程序(并且已经使用了一年多)。它集成了读取、解析和重写所需的 ClickOnce 清单,而无需您退回到后期构建步骤和法师。您可以免费试用并亲自试用。
  • 太棒了。不知道。为你 +1 :)
【解决方案2】:

这对你来说是一个奇怪的想法。我假设您的开发环境支持重构,重命名变量当然是一种流行的重构操作。看看你是否可以编写脚本。如果不能,请考虑AutoIt 之类的东西。看看这将走向何方?用重构操作表达你的重命名,编写脚本并将其作为预编译步骤。

这样您就可以保持您的来源不被混淆,同时执行您想要的所有混淆操作,并且您知道这些操作会起作用。

【讨论】:

  • 是的,这就是我的想法。无需惊慌失措(@guys 评论我的问题;))。但我的问题实际上不是如何做到这一点,而是结果与真正的混淆器所做的有多接近。
【解决方案3】:

我之所以要这样做是因为混淆器会弄乱我的数据绑定

我不知道您的数据绑定是如何工作的,但是如果您在 C# 源代码中将属性名称硬编码为字符串,那么我会用 lamdas 替换硬编码的字符串来识别属性。这对重构也更加友好。

Get property name inside setter

【讨论】:

    【解决方案4】:

    是否绝对有必要支持 ClickOnce?还有其他方法可以分发应用程序。考虑编译代码,使用您选择的混淆器,然后使用 Inno Setup 之类的东西构建安装程序。

    我强烈建议您不要直接重命名代码中的内容。如果您必须遵循此路径,请尝试制作项目的副本(一旦处于其最终状态),在 IDE 中打开副本,并使用重构工具重命名类、变量和方法。如果你不复制,你的代码以后将很难更改。

    【讨论】:

      【解决方案5】:

      Babel.NET 的免费版本对我来说效果很好,它混淆了函数的内部代码,并重命名了所有私有和内部类和成员。我们使用反射、序列化和数据绑定,它没有与其中任何一个混淆。
      它还支持与 MSBuild 的集成,我相信这将有助于处理后面的 ClickOnce 生成。

      【讨论】:

        猜你喜欢
        • 2023-04-08
        • 1970-01-01
        • 1970-01-01
        • 2013-04-04
        • 2015-11-21
        • 2012-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多