34

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

具体来说,哪些混淆工具可以处理 WPF 程序集中的 BAML 重写,以及处理 BAML 中的跨程序集引用?

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

4

6 回答 6

6

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

于 2013-05-04T20:01:40.673 回答
4

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

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

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

如果您确实有我们在混淆过程中破坏的特定场景,请继续发送它,我们一直在寻求使我们的产品更好。

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

于 2011-02-16T18:11:50.387 回答
4

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

由于 BAML 只是一种图形表示,因此在运行时人们还可以使用 Snoop 工具来识别控件的运行时视图。

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

于 2011-02-14T20:03:38.780 回答
3

ConfuserEx是一个开源混淆器,它在使代码难以理解方面做得很好。

如果 WPF exe 在使用其中一种预设后无法正常工作,请尝试手动添加保护(我发现在我的情况下,“名称保护”(重命名)正在破坏事件处理): 在此处输入图像描述

于 2019-04-02T21:23:19.410 回答
2

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

CodeFort 中的重命名功能虽然是一团糟。在我的所有程序集中启用重命名(使用 XAML 支持)破坏了应用程序。然后我尝试从重命名中排除所有类型(包括所有成员),由于糟糕的用户体验,这非常耗时。这并没有使应用程序栩栩如生。

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

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

于 2011-02-18T10:28:38.363 回答
0

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

在此处输入图像描述

使用 ILSpy 反编译:

之前(只有代码加密)

在此处输入图像描述

之后(使用资源加密)

在此处输入图像描述

于 2017-12-26T17:35:34.827 回答