正确支持WPF的混淆器

时间:2011-02-14 17:04:55

标签: .net wpf .net-4.0 obfuscation baml

.NET的一个好的混淆器工具有哪些选项可以支持.NET 4.0中的WPF?

特别是,哪些混淆工具在WPF程序集中处理BAML的重写,并处理BAML中的跨程序集引用?

虽然大多数混淆器列出了“WPF”和“.NET 3.5”或“.NET 4”支持,但实际上,它们无法重写嵌入式BAML引用,导致使用WPF的跨程序集调用被不正确地处理。这可以防止它们在大型WPF应用程序中使用。

6 个答案:

答案 0 :(得分:5)

从版本3.5开始,

Eazfuscator.NET进行了正确的WPF重命名。我们投入了大量的研发工作来创建一个可行的解决方案。 XAML重命名由专用分析器提供支持,该分析器将XAML的绑定,命令和其他所有方面都考虑在内,以提供精确的结果。你可以尝试一下。

答案 1 :(得分:4)

WPF很大程度上依赖于Reflection,并且更改属性名称可能无法正常工作,因为绑定将无法正常运行。混淆器工具不会检测ViewModel中可能存在的代码中的字符串引用,依此类推。无论你做什么。像Blend这样的工具无论如何都可以从BAML创建模板和样式的副本,这就是引入BAML而不是从xaml创建可执行代码的原因。

因为BAML只是一个图形表示,在运行时人们也可以使用Snoop工具来识别控件的运行时视图。

但是,有一个免费工具可以在文件后面生成WPF代码作为纯CLR对象图表示而不是BAML,http://xamlgenerator.codeplex.com/(免责声明:此xamlgenerator是我公司创建的免费工具)

答案 2 :(得分:4)

免责声明:我为PreEmptive Solutions(Dotfuscator的制造商)工作。

如果你曾经尝试过Dotfuscator,你应该再试一次。我们不断改进我们的XAML / BAML解析&重写能力。您应该可以从PreEmptive网站(或通过联系销售人员)轻松获得新的免费评估版本。

我们的大多数客户都能够对大部分WPF / Silverlight / WP7应用程序进行模糊处理,而无需进行重大排除。即使BAML混淆破坏了应用程序中的某些内容,您也应该能够有选择地仅排除那些不应重命名的项目。

如果你确实有一个特定的场景,我们在混淆过程中会破坏,请继续发送,我们总是希望让我们的产品更好。

此时,声称能够修改XAML或BAML的唯一其他.NET混淆器(我知道)是CodeFort。我显然有偏见所以我会让你调查产品并做出自己的判断:)。

答案 3 :(得分:2)

我在多组件Silverlight 4应用程序中尝试了CodeFort,但取得了部分成功。参考加扰和字符串加密工作很好,并带来一定程度的保护。

CodeFort中的重命名功能虽然很乱。在我的所有程序集中启用重命名(使用XAML支持)会破坏应用程序。我尝试将所有类型(包括所有成员)排除在重命名之外,由于用户体验不佳,这非常耗时。这并没有带来应用程序。

调试和故障排除也不起作用。 CodeFort不尊重PDB文件。调试问题的唯一方法是使调试器能够中断所有抛出的异常。现在我看到XAML解析器抱怨app.xaml,看起来没问题。

至于现在,我只是坚持引用加扰和字符串加密。

答案 4 :(得分:0)

在我们公司,我们使用Agile.NET Obfuscator - 它支持WPF应用程序,可以保护/加密托管资源,包括BAML文件。

enter image description here

使用ILSpy进行反编译:

之前(仅使用代码加密)

enter image description here

之后(使用资源加密)

enter image description here

答案 5 :(得分:0)

ConfuserEx是一个开放源代码混淆器,在使代码很难遵循方面做得很好。

如果使用其中一种预设后WPF exe无法正常运行,请尝试手动添加保护(在我的情况下,我发现“名称保护”(重命名)破坏了事件处理): enter image description here