微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Xamarin 表单的混淆

如何解决Xamarin 表单的混淆

我正在使用 Visual Studio for Mac(社区版)开发 Xamarin.Forms 应用程序。我可以使用 ILSpy

反编译 Android 应用程序的源代码

为了混淆源代码,我使用了Obfuscar并按照https://docs.obfuscar.com/tutorials/xamarin.html中的步骤

  • 以下是 Xamarin.Android 项目结构

enter image description here

  • 以下是 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 中完成

enter image description here

当项目在 Release 模式下构建、存档和反编译时,源代码仍然可以使用 ILSpy 以纯文本形式显示

enter image description here

我需要帮助为 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>

奇怪的是,InPathOutPath 在 Mac 上使用的是绝对路径而不是相对路径。我所做的唯一更改是在 InPathOutPath 中使其工作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。