Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 你如何发布一个';她被ConfuserEx弄糊涂了?_C#_Xamarin_Xamarin.android_Xamarin.forms_Obfuscation - Fatal编程技术网

C# 你如何发布一个';她被ConfuserEx弄糊涂了?

C# 你如何发布一个';她被ConfuserEx弄糊涂了?,c#,xamarin,xamarin.android,xamarin.forms,obfuscation,C#,Xamarin,Xamarin.android,Xamarin.forms,Obfuscation,我已经用Xamarin.Forms PCL创建了一个Android应用程序,现在我想在发布之前保护它。我正在使用ConfuserEx,尽管我也尝试过.NETreactor,但也遇到了同样的问题 我遇到的问题不是混淆器本身,它正确地执行了它需要对我的AppName.dll文件执行的操作,将混淆后的dll放入文件夹$(SolutionDir)AppName\AppName.Droid\bin\fuzzle\AppName.dll。但是,当我在VisualStudio 15中通过AdHoc发布我的应用

我已经用Xamarin.Forms PCL创建了一个Android应用程序,现在我想在发布之前保护它。我正在使用ConfuserEx,尽管我也尝试过.NETreactor,但也遇到了同样的问题

我遇到的问题不是混淆器本身,它正确地执行了它需要对我的AppName.dll文件执行的操作,将混淆后的dll放入文件夹
$(SolutionDir)AppName\AppName.Droid\bin\fuzzle\AppName.dll
。但是,当我在VisualStudio 15中通过AdHoc发布我的应用程序时,它会发布带有非模糊dll的apk,因此我可以轻松地自行对应用程序进行反向工程,并查看所有原始代码

以下是我当前的设置:

  • 我创建了名为
    NormalObfuscate.crproj
    的ConfuserEx文件,并将 它与我的解决方案一起放在文件夹中
  • 在我的Android项目的属性中,在构建事件下,我放置了以下构建后事件:
如果/I“$(ConfigurationName)”==“Release”“$(SolutionDir)ConfuserEx\Code\Confuser.CLI.exe”“$(SolutionDir)NormalObfuscate.crproj”

如果/I“$(ConfigurationName)”==“Release”xcopy/Y“$(SolutionDir)AppName\AppName.Droid\bin\Middle\AppName.dll”“$(SolutionDir)\AppName\AppName.Droid\bin\Release\AppName.dll”

如果/I“$(ConfigurationName)”==“Release”xcopy/Y“$(SolutionDir)AppName\AppName.Droid\bin\Middle\AppName.dll”“$(SolutionDir)\AppName\AppName.Droid\obj\Release\linksrc\AppName.dll”

  • 我重新构建了解决方案
  • 我归档了项目,并通过单击分发然后签署apk来发布它

在所有这些之后,我能够卸载apk,而经过模糊处理的dll不在其中,即使它在我的bin\Release文件夹中。有人知道如何让归档管理器在压缩和发布应用程序时使用模糊的dll吗?

我最终以一种更迂回的方式实现了这一点


首先,在App.Droid的项目文件中,在
下添加
。(我制作了另一个bat文件,以便更轻松地执行执行步骤。)

不要使用归档管理器。使用
msbuild
并将
true
添加到
.csproj
。否则,归档管理器只会运行它的正常配置,而忽略您的配置。这也会对我的apk进行签名吗?是的,它应该相当于
/t:signandridpackage
我将您的一行添加到我的项目文件中的以下行:
。它成功地创建了已签名的apk文件,但仍然有未融合的代码。我把它放错地方了吗?您需要确保这些混淆任务在构建期间发生。他们必须在msbuild进程中进行迂回,才能这样做。thx为我指明了正确的方向。但我还有一个错误。“System.BadImageFormatException:无效的DOS签名”。此方法是否仍适用于最新版本的xamarin?
<Target Name="Obfuscate" AfterTargets="_CopyIntermediateAssemblies" Condition="'$(Configuration)' == 'Release'">
    <Exec Command="ObfuscateRelease.bat" WorkingDirectory="$(SolutionDir)" />
</Target>
echo running ObfuscateRelease.bat
:: Call Confuser ex to obfuscate your project
START /WAIT "Obfuscating App.dll" "<Path to Confuser>\ConfuserEx\Code\Confuser.CLI.exe" "<Path to Confuser Ex file>\NormalObfuscate.crproj"
:: copy confused files into the release folders so it is packaged into the app
echo starting to copy
copy "<Path to App>\App\App.Droid\bin\Confused\App.dll" "<Path to App>\App\App\App.Droid\bin\Release"
copy "<Path to App>\App\App.Droid\bin\Confused\App.dll" "<Path to App>\App\App.Droid\obj\Release\linksrc"
copy "<Path to App>\App\App.Droid\bin\Confused\App.Droid.dll" "<Path to App>\App\App.Droid\bin\Release"
copy "<Path to App>\App\App.Droid\bin\Confused\App.Droid.dll" "<Path to App>\App\App.Droid\obj\Release\linksrc"
echo finished copying
echo finished ObfuscateRelease.bat