首页 > 解决方案 > Xamarin 表单的混淆

问题描述

我正在使用 Visual Studio for Mac(社区版)开发 Xamarin.Forms 应用程序。我能够使用ILSpy反编译 Android 应用程序的源代码

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

在此处输入图像描述

    <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>

在此处输入图像描述

当项目以Release存档和反编译模式构建时,使用 ILSpy 仍可以以纯文本形式看到源代码。

在此处输入图像描述

我需要帮助为 Xamarin.Forms 项目正确配置混淆器

标签: xamarinxamarin.formsxamarin.androidvisual-studio-macobfuscar

解决方案


使用以下 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>

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


推荐阅读