xamarin - Xamarin 表单的混淆
问题描述
我正在使用 Visual Studio for Mac(社区版)开发 Xamarin.Forms 应用程序。我能够使用ILSpy反编译 Android 应用程序的源代码
为了混淆源代码,我使用了 Obfuscar并按照https://docs.obfuscar.com/tutorials/xamarin.html中的步骤进行操作
- 下面是 Xamarin.Android 项目结构
- 下面是里面的配置
obfuscar.xml
<Obfuscator>
<Var name="RenameProperties" value="true" />
<Var name="RenameEvents" value="true" />
<Var name="RenameFields" value="true" />
<Var name="KeepPublicApi" value="false" />
<Var name="HidePrivateApi" value="true" />
<Var name="HideStrings" value="true" />
<Var name="UseUnicodeNames" value="true" />
<Var name="OptimizeMethods" value="true" />
<Var name="InPath" value="./bin/Release" />
<Var name="OutPath" value="./bin/Release/Obfuscator_Output" />
<Module file="$(InPath)/Sample.dll" />
</Obfuscator>
- 以下更改在 Android.csproj 中完成
当项目以Release
存档和反编译模式构建时,使用 ILSpy 仍可以以纯文本形式看到源代码。
我需要帮助为 Xamarin.Forms 项目正确配置混淆器
解决方案
使用以下 Obfuscar 配置一切正常
<Obfuscator>
<Var name="RenameProperties" value="true" />
<Var name="RenameEvents" value="true" />
<Var name="RenameFields" value="true" />
<Var name="KeepPublicApi" value="false" />
<Var name="HidePrivateApi" value="true" />
<Var name="HideStrings" value="true" />
<Var name="UseUnicodeNames" value="true" />
<Var name="OptimizeMethods" value="true" />
<Var name="InPath" value="/Users/sahil.khanna/path_to_xamarin_project/Sample.Android/bin/Release" />
<Var name="OutPath" value="$(InPath)/Obfuscator_Output" />
<Module file="$(InPath)/Sample.dll" />
</Obfuscator>
奇怪的是,InPath
在OutPath
Mac 上使用的是绝对路径而不是相对路径。我所做的唯一更改是在InPath
andOutPath
中使其工作。
推荐阅读
- http - JMeter:HTTP请求的变量
- azure - ADF - SSIS 执行包错误 114 - Ssis 操作失败并出现意外操作状态:正在运行
- c# - 在按钮单击时获取列值
- hive - 哪些配置单元设置需要重新启动?
- jquery - 谷歌地图自动完成通话,无需地点详细信息请求
- performance - 在计算密集型系统中,添加更多节点会导致(接近)线性性能提升吗?
- php - 如何修复:本地主机中的文件上传错误?
- chef-infra - 在 Chef Cookbook 中安装可执行包
- laravel - 在 PHP 中使用弹出窗口进行 Facebook 身份验证 - 如何使用 accessToken 和 app-secret
- ruby - 从地图中获取值