正确支持WPF的混淆器

问题描述 投票:31回答:6

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

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

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

.net wpf .net-4.0 obfuscation baml
6个回答
5
投票

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


4
投票

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

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

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

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

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


4
投票

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

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

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


2
投票

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

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

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

至于现在我只是坚持参考加扰和字符串加密。


1
投票

ConfuserEx是一个开源混淆器,它做得非常好,使代码很难遵循。

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


0
投票

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

enter image description here

使用ILSpy进行反编译:

之前(仅使用代码加密)

enter image description here

之后(使用资源加密)

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.