0

尝试使用 CryptoObfuscator 混淆 UWP (WinRT) AnyCPU 程序集时,会观察到以下错误消息:

1.) 将 LogicNP.CryptoLicensing.WinRT.dll(WinRT 程序集)合并到 UWP DLL 中时:

混淆时发生错误: - 许可程序集 (Silverlight) 的 .Net 框架版本类型与混淆程序集的版本类型 (Normal) 不匹配。

在此处输入图像描述

2.) 当许可程序集的合并被忽略时:

混淆时发生错误:System.IO.FileNotFoundException - System.IO.FileNotFoundException:无法导致:System.Runtime,Version=4.0.20.0,Culture=neutral... 使用“搜索目录”指定此程序集所在的路径

有没有人成功地使用 CryptoObfuscator(被宣传为适用于任何 .NET 程序集)?

在此处输入图像描述

4

2 回答 2

2

实际上,在这种情况下使用 CryptObfuscator 时需要考虑两个问题:

要混淆其他 .NET 版本,除了将目标框架设置为 之外,还必须将以下内容添加到每个相关的 csproj 中:

<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>

这解决了大多数混淆时找不到文件的问题。

对于 System.Runtime,您需要下载并打开 System.Runtime 的 NuGet 包。在该lib文件夹中,您会发现一些不错的技巧,这些技巧取决于所使用的 CLR,并将其余的 .NET 程序集与 CLR 粘合在一起,例如使用 .NET 4.7 的转发类型。但在refnetstandard1.5 等文件夹中,您会找到 System.Runtime.dll。手动将其复制到输出文件夹或 CryptoObfuscator 将搜索的位置。

您也可以将其放在另一个文件夹中,并在 CryptoObfuscator 中使用 Project Properties 或 XML 指定搜索目录:

<SearchDirectories>
  <SearchDirectory Path="PATH" />
</SearchDirectories>
于 2018-01-05T10:44:40.927 回答
1

尝试从 nuget“Microsoft.NETCore.UniversalWindowsPlatform”下载并将从 nuget 下载的“System.Runtime.dll”复制到 CryptoObfuscator 文件夹。

于 2018-10-26T16:10:15.850 回答