c# wpf .net Confusere obfuscator

本文关键字:obfuscator Confusere net wpf | 更新日期: 2023-09-27 18:33:26

我有这个问题:

我做了一个C# WPF(.NET Framework 4.0(应用程序,一切都很好。现在我想混淆它。我尝试过Confuser。

问题是:

  1. 如果应用程序已发布,我可以看到主exe文件和dll-s。所以我试图混淆exe。我应该把经过混淆.exe生成的文件放在哪里(我只混淆主exe文件(。我的意思是 Confuser 创建了一个名为"Confuser"的文件夹,其中包含经过混淆的 exe。如果我双击经过混淆的 exe 以启动应用程序,因为它通常不起作用,并且我得到正常的应用程序压缩窗口。我还尝试将原始 exe 文件(在应用程序文件夹中(替换为经过混淆的文件(来自 Confuser 文件夹(。

  2. 如果部署了应用程序,我有设置.msi包或设置.exe。在这种情况下,我应该如何混淆?

谢谢,艾利安

c# wpf .net Confusere obfuscator

所有基于 XAML 的平台(WPF、Silverlight、Windows Phone(对于大多数混淆器来说都是非常有问题的领域。主要问题是 XAML 按名称引用类型和成员。难怪应用程序在混淆后经常无法正常工作:完整性会中断。

混淆器使用两种方法来保持输出程序集在之后工作:

  1. 在 XAML 内容中搜索可能是类型或属性名称的所有内容,然后粗略排除与这些名称匹配的所有成员。这并不能 100% 保证应用程序不会损坏,同时由于分析不准确而使混淆覆盖率变差。尽管如此,此方法可能会使您的应用程序免于中断。

  2. 执行类似于 XamlReader 的操作:加载 XAML 树并查找所有匹配的 CLR 类型和成员。重命名后,所有更改都将与 XAML 同步。此方法提供最佳的可靠性和覆盖范围(类型和成员在代码和 XAML 中重命名(。市场上有混淆器声称它们支持 XAML 重命名。您可能想尝试其中的一些。

还有一个解决方法。大多数混淆器支持条件混淆,允许手动排除特定类型和成员。应手动排除 XAML 以某种方式引用的所有类型和成员。这将需要一些时间,但通常有效。

首先,混淆主.exe文件并替换旧文件。然后将所有内容打包到安装程序中。

此外,请确保 xaml 中涉及的所有属性和类型都声明为公共属性和类型。或者告诉混淆器以某种方式忽略它们。

我会先尝试一个简单的控制台应用程序。确保你可以让它使用它。

然后,我可能会发展到一个简单的 WPF 应用。

WPF 和模糊处理的问题在于它依赖于反射。视图模型按名称绑定。可能是此混淆器对此不敏感,或者您需要将其配置为忽略视图模型上的属性名称。

如果您有任何其他使用名称的反射,那也可能破坏它。即使是Enum.Parse电话也可能被绊倒。也许你对XML进行seralization,这也是它可能会中断的一点。

您可能希望显示应用程序崩溃的异常以帮助您进行调试,但我自己会使用该工具使用简单的应用程序来弄清楚它如何解决上述问题。