Android アプリケーション
このサンプルプロジェクトでは、Babel Obfuscator の NuGet パッケージを使って、.NET 7 ベースの Android アプリケーションで難読化を有効にします。Babel Obfuscator の NuGet パッケージは、.NET プロジェクトに簡単に統合できます。Visual Studio またはコマンドラインから、難読化を直接設定して適用できます。
このサンプルプロジェクトを使用して手順を進めるには、Babel Obfuscator のサイトライセンス(Ultimate、Server、Data Center のいずれかのエディション)が必要です。サンプルプロジェクトのソースコードは、プロジェクトの GitHub リポジトリからダウンロードできます。
git clone https://github.com/babelfornet/android-app-example.gitサンプルプロジェクト「AndroidApp」は、Android アプリケーションを難読化する流れを示すために作られています。このプロジェクトには Babel Obfuscator の NuGet パッケージへの参照が含まれており、ビルドプロセスの中でターゲットアセンブリ「AndroidApp.dll」が難読化されます。
AndroidApp プロジェクトでは、Babel Obfuscator の NuGet パッケージで難読化をセットアップしているほか、ほかの種類の難読化を有効にするために、プロジェクトファイル(AndroidApp.csproj)にいくつかの設定を追加しています。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0-android</TargetFramework>
<SupportedOSPlatformVersion>21</SupportedOSPlatformVersion>
<OutputType>Exe</OutputType>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<ApplicationId>com.companyname.AndroidApp</ApplicationId>
<ApplicationVersion>1</ApplicationVersion>
<ApplicationDisplayVersion>1.0</ApplicationDisplayVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Babel.Obfuscator" Version="10.0.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
<PropertyGroup>
<Use>tagassembly=true</Use>
<StringEncryption>true</StringEncryption>
<ControlFlowObfuscation>goto=on;if=on;switch=on;case=on;call=on;true</ControlFlowObfuscation>
<DynamicProxy>all</DynamicProxy>
<ResourceEncryption>true</ResourceEncryption>
<VerboseLevel>3</VerboseLevel>
<XmlRules>
<Rules>
<Rule name="rule1" feature="renaming" exclude="false">
<Pattern>*</Pattern>
</Rule>
</Rules>
</XmlRules>
</PropertyGroup>
</Project>たとえば、プロジェクトファイルには文字列暗号化の設定が含まれています。文字列暗号化は、アプリケーションのコードにある文字列リテラルを難読化し、攻撃者によるアプリのリバースエンジニアリングを難しくします。さらに、すべてのパブリック型をリネームするカスタムルールも設定しており、リネームされる型の数が増えます。
アプリを起動すると、難読化されたアセンブリ内のすべての型がメインビューに表示されます。

Android アプリのエミュレーター
このビューから、ほとんどの型が Babel によってリネームされていることがわかり、難読化されたアプリケーションが実行されていることを確認できます。
このサンプルプロジェクトでは、Babel Obfuscator の NuGet パッケージを Android アプリケーションに統合し、目的の結果が得られるように難読化の設定をカスタマイズする方法を示しています。このサンプルを通じて、型とメソッドのリネーム、メタデータの除去、文字列の暗号化、制御フロー難読化の追加によって、Babel Obfuscator が Android アプリケーションの保護にどう役立ち、アプリケーション全体のセキュリティをどう高めるかを理解できます。