正确支持WPF的混淆器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正确支持WPF的混淆器相关的知识,希望对你有一定的参考价值。
.NET的一个好的混淆器工具有哪些选项可以支持.NET 4.0中的WPF?
特别是,哪些混淆工具处理WPF程序集中的BAML重写,并处理BAML中的跨程序集引用?
虽然大多数混淆器列出了“WPF”和“.NET 3.5”或“.NET 4”支持,但实际上,它们无法重写嵌入式BAML引用,导致使用WPF的跨程序集调用被不正确地处理。这可以防止它们在大规模WPF应用程序中使用。
自3.5版以来,Eazfuscator.NET进行了正确的WPF重命名。我们进行了大量的研发工作,以创建一个可行的解决方案。 XAML重命名由专用分析器提供支持,该分析器将XAML的绑定,命令和其他所有方面都考虑在内,以提供精确的结果。你可以尝试一下。
免责声明:我为PreEmptive Solutions(Dotfuscator的制造商)工作。
如果你曾经尝试过Dotfuscator,你应该再试一次。我们不断改进我们的XAML / BAML解析和重写功能。您应该可以从PreEmptive网站(或通过联系销售人员)轻松获得新的免费评估版本。
我们的大多数客户都能够对大多数WPF / Silverlight / WP7应用程序进行模糊处理,而不会有明显的排除。即使BAML混淆破坏了应用程序中的某些内容,您也应该能够有选择地仅排除那些不应重命名的项目。
如果你确实有一个特定的场景,我们在混淆过程中会破坏,请继续发送,我们总是希望让我们的产品更好。
此时,声称能够修改XAML或BAML的唯一其他.NET混淆器(我知道)是CodeFort。我显然有偏见所以我会让你调查产品并做出自己的判断:)
WPF很大程度上依赖于Reflection,并且更改属性名称可能无法正常工作,因为绑定将无法正常运行。混淆器工具不会检测ViewModel中可能存在的代码中的字符串引用,依此类推。无论你做什么。像Blend这样的工具无论如何都可以从BAML创建模板和样式的副本,这就是引入BAML而不是从xaml创建可执行代码的原因。
因为BAML只是一个图形表示,在运行时人们也可以使用Snoop工具来识别控件的运行时视图。
但是,有一个免费工具可以生成文件后面的WPF代码作为纯CLR对象图表示而不是BAML,http://xamlgenerator.codeplex.com/(免责声明:此xamlgenerator是我公司创建的免费工具)
我在多组件Silverlight 4应用程序中尝试了CodeFort,但取得了部分成功。参考加扰和字符串加密工作很好,并带来一定程度的保护。
CodeFort中的重命名功能虽然很乱。在我的所有程序集中启用重命名(使用XAML支持)会破坏应用程序。我尝试将所有类型(包括所有成员)排除在重命名之外,由于用户体验不佳,这非常耗时。这并没有将应用程序变为现实。
调试和故障排除也不能很好地工作。 CodeFort不尊重PDB文件。调试问题的唯一方法是使调试器能够中断所有抛出的异常。现在我看到XAML解析器抱怨app.xaml,看起来没问题。
至于现在我只是坚持参考加扰和字符串加密。
ConfuserEx是一个开源混淆器,它做得非常好,使代码很难遵循。
如果在使用其中一个预设后WPF exe无法正常工作,请尝试手动添加保护(我发现在我的情况下'名称保护'(重命名)正在破坏事件处理):
在我们公司,我们使用Agile.NET Obfuscator - 它支持WPF应用程序,可以保护/加密托管资源,包括BAML文件。
使用ILSpy进行反编译:
之前(仅使用代码加密)
之后(使用资源加密)
以上是关于正确支持WPF的混淆器的主要内容,如果未能解决你的问题,请参考以下文章
使用Allatori对Spring Boot项目进行代码混淆
sklearn使用投票器VotingClassifier算法构建多模型融合的硬投票器分类器(hard voting)并计算融合模型的混淆矩阵可视化混淆矩阵(confusion matrix)