Xamarin使用混淆工具.Net Reactor构建可移植库

时间:2018-01-14 10:04:04

标签: xamarin.forms net-reactor

我正在开发Xamarin表单项目(带便携式项目) 我试图使用.Net Reactor来混淆便携式dll我使用批处理文件来完成它,该文件被设置为便携式项目的后期构建事件,一切正常(即生成的dll被成功模糊) 这是脚本代码

    "C:\Program Files (x86)\Eziriz\.NET Reactor\dotNET_Reactor.exe" -project 
    "reactor.nrproj" -file "myProject.dll"
  copy "myProject_Secure\myProject.dll" "myProject.dll"

问题是当我构建droid项目时出现以下错误

  

加载程序集时出现异常:System.IO.FileNotFoundException:   无法加载程序集'Windows,Version = 255.255.255.255,   Culture = neutral,PublicKeyToken ='。也许它不存在于   Mono对于Android的个人资料?文件名:'Windows.dll'at   Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference   参考,ReaderParameters参数)   /Users/builder/data/lanes/5147/c2a33d8e/source/xamarin-android/external/Java.Interop/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil/DirectoryAssemblyResolver.cs:line   220点   Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences(DirectoryAssemblyResolver   解析器,ICollection`1程序集,AssemblyDefinition程序集,   布尔topLevel)at   Xamarin.Android.Tasks.ResolveAssemblies.Execute(DirectoryAssemblyResolver   解析器)myProject.Droid

我确信这个问题来自混淆,因为一切正常而没有混淆

是否有人使用.Net reactor来混淆Xamarin表单项目?

顺便说一句,我已经取消了.Net反应堆的所有快速设置,问题仍然显示

2 个答案:

答案 0 :(得分:0)

混淆Xamarin Android毫无用处,因为最好打开“将程序集嵌入到本机代码”,这会将所有代码转换为二进制.so文件。因此,黑客或逆向工程师很难读取该代码并进行逆向工程。您可以使用AOT,但这是实验性的,在Play商店更新后可能会给某些设备造成问题。为了安全起见,我建议使用“嵌入到本机代码的程序集”

答案 1 :(得分:0)

您需要将“ 2. Protection Settings”->“ Anti ILDASM”->“ Suppress Decompilation”设置为“ False”,因为这会使构建过程变得混乱。如果仍然无法正常工作,请将“ 1.常规设置”->“项目目标Mono框架”设置为“真”。