Applicazione Android
In questo progetto di esempio usiamo il pacchetto NuGet di Babel Obfuscator per abilitare l’offuscamento in un’applicazione Android basata su .NET 7. Il pacchetto NuGet di Babel Obfuscator si integra facilmente in un progetto .NET e offre un modo pratico per configurare e applicare l’offuscamento direttamente da Visual Studio o dalla riga di comando.
Per usare questo progetto di esempio e seguire le istruzioni ti serve una licenza per sede di Babel Obfuscator (edizioni Ultimate, Server o Data Center). Il codice sorgente del progetto di esempio può inoltre essere scaricato dal repository GitHub associato al progetto.
git clone https://github.com/babelfornet/android-app-example.gitIl progetto di esempio “AndroidApp” mostra il processo di offuscamento di un’applicazione Android. Il progetto contiene il riferimento al pacchetto NuGet di Babel Obfuscator, che esegue l’offuscamento sull’assembly target AndroidApp.dll durante il processo di build.
Oltre a usare il pacchetto NuGet di Babel Obfuscator per impostare l’offuscamento nel progetto AndroidApp, al file di progetto (AndroidApp.csproj) è stata aggiunta altra configurazione per abilitare ulteriori tipi di offuscamento.
<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>Per esempio, il file di progetto contiene le impostazioni della cifratura delle stringhe, che offusca i valori letterali stringa nel codice dell’applicazione per rendere più difficile agli attaccanti il reverse engineering dell’app. La configurazione definisce inoltre una regola personalizzata per rinominare tutti i tipi pubblici, che aumenta il numero di tipi rinominati.
All’avvio, l’app mostra nella vista principale tutti i tipi contenuti nell’assembly offuscato.

Emulatore dell'app Android
La vista mostra che la maggior parte dei tipi è stata rinominata da Babel, a conferma che è in esecuzione l’applicazione offuscata.
Questo progetto di esempio mostra come integrare il pacchetto NuGet di Babel Obfuscator in un’applicazione Android e come personalizzarne le impostazioni di offuscamento per ottenere risultati specifici. L’esempio permette di capire come Babel Obfuscator aiuta a proteggere le applicazioni Android rinominando tipi e metodi, rimuovendo metadati, cifrando le stringhe e aggiungendo al codice l’offuscamento del flusso di controllo, a vantaggio della sicurezza complessiva dell’applicazione.