2010-11-24 174 views
4

您认为如何将我的所有课程,属性,方法等重命名为______?这与C#混淆器(如Dotfuscator或Eazfuscator)对我的应用程序的作用有多接近,还有什么我可以手动(在合理的时间内)使我的代码尽可能混淆?之所以我想这样做,是因为混淆器会混淆我的数据绑定,因为它们不会混淆使用ClickOnce发布的应用程序(除非我使用清单和其他不知道如何处理的东西而且没有人真的知道它是否总能正常工作)。手动混淆代码?

+1

我觉得这似乎是一个很大的工作。 – 2010-11-24 04:34:00

+2

那里有很多混淆器。你确定他们没有一个能满足你的需求吗?手动混淆非常容易出错...... – SteveCav 2010-11-24 04:34:03

+1

我很可惜将会保持这样一个怪物的开发。它一定会在TheDailyWTF.com做一篇很棒的文章。 – 2010-11-24 04:40:56

回答

2

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

2

这是你的一个奇怪的想法。我假设你的开发环境支持重构,重命名变量当然是一种流行的重构操作。看看你是否可以编写脚本。如果你不能,考虑一下像AutoIt。看看这是哪里?根据重构操作表达重命名,编写脚本并将其编译为预编译步骤。

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

1

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

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

0

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

2

为什么我想这样做的原因是因为混淆器会搞乱我的数据绑定

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

Get property name inside setter