手动混淆代码?

时间:2010-11-24 04:29:20

标签: c# .net obfuscation

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

5 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

这对你来说很奇怪。我假设您的开发环境支持重构,重命名变量肯定是一种流行的重构操作。看看你是否可以编写脚本。如果你不能,请考虑像AutoIt这样的事情。看看这是怎么回事?在重构操作方面表达您的重命名,编写脚本并将其转换为预编译步骤。

通过这种方式,您可以保持源代码不被混淆,但可以执行所需的所有混淆操作,并且您知道这些操作可以正常工作。

答案 2 :(得分:2)

  

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

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

Get property name inside setter

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

Babel.NET的免费版本对我来说效果很好,它模糊了函数的内部代码,并重命名了所有私有和内部类和成员。我们使用反射,序列化和数据绑定,并没有弄乱任何这些 它还支持与MSBuild的集成,我认为这有助于处理后续的ClickOnce生成。