我需要将我的代码混淆为公司政策的一部分。我正在使用MSBuild来自动执行此过程:
<Exec Command="$(MsBuildPath) /p:Configuration=Release /t:Rebuild;SignAndroidPackage "$(CodeRootPath)\Mfx.UI.Droid\Mfx.UI.Droid.csproj" > "$(OutputPath)\3_BuildApkLog.txt"" />
是构建解决方案并创建apk的相关行。我在后期构建事件中进行了混淆:
COPY $(TargetDir)*.* $(TargetDir)..\..\..\..\Obfuscation\workbench
"C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild.exe" "$(TargetDir)..\..\..\..\Obfuscation\Capture.babel"
将构建文件夹的输出复制到另一个文件夹并调用我的babel项目,该项目将模糊的DLL输出到原始构建文件夹。批处理文件完成后,bin \ Release \中的DLL都被混淆了,但是当我反编译我的APK时,其中的DLL不会被混淆。
有没有办法在生成APK后对DLL进行模糊处理,或者是否有更好的时间进行模糊处理?
答案 0 :(得分:3)
除了使用混淆器,您还可以:
使用Android的AOT编译,删除IL代码并替换为本机代码,只保留元数据。这很难反编译。
在本机代码中嵌入程序集,这使得访问IL变得更加困难。