Xamarin Apps

Support HackTricks

This is a summary of the blog post https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers

Osnovne informacije

Xamarin je platforma otvorenog koda dizajnirana za programere da prave aplikacije za iOS, Android i Windows koristeći .NET i C# okvire. Ova platforma nudi pristup brojnim alatima i ekstenzijama za efikasno kreiranje modernih aplikacija.

Arhitektura Xamarina

  • Za Android, Xamarin se integriše sa Android i Java imenskim prostorima putem .NET veza, radeći unutar Mono izvršnog okruženja zajedno sa Android Runtime (ART). Managed Callable Wrappers (MCW) i Android Callable Wrappers (ACW) olakšavaju komunikaciju između Mono i ART, koji su oba izgrađena na Linux kernelu.

  • Za iOS, aplikacije se izvršavaju pod Mono runtime-om, koristeći potpunu Ahead of Time (AOT) kompilaciju za konverziju C# .NET koda u ARM asembler jezik. Ovaj proces se odvija zajedno sa Objective-C Runtime na UNIX-sličnom kernelu.

.NET Runtime i Mono Framework

.NET framework uključuje asambleje, klase i imenske prostore za razvoj aplikacija, pri čemu .NET Runtime upravlja izvršenjem koda. Pruža nezavisnost od platforme i unazad kompatibilnost. Mono Framework je verzija .NET framework-a otvorenog koda, pokrenuta 2005. godine kako bi se proširio .NET na Linux, sada podržana od strane Microsoft-a i vođena od strane Xamarina.

Reverzno inženjerstvo Xamarin aplikacija

Decompilacija Xamarin asambleja

Decompilacija transformiše kompajlirani kod nazad u izvorni kod. U Windows-u, prozor Moduli u Visual Studio-u može identifikovati module za decompilaciju, omogućavajući direktan pristup kodu trećih strana i ekstrakciju izvornog koda za analizu.

JIT vs AOT kompilacija

  • Android podržava Just-In-Time (JIT) i Ahead-Of-Time (AOT) kompilaciju, sa hibridnim AOT režimom za optimalnu brzinu izvršenja. Potpuna AOT je ekskluzivna za Enterprise licence.

  • iOS koristi isključivo AOT kompilaciju zbog Apple-ovih ograničenja na dinamičko izvršavanje koda.

Ekstrakcija dll fajlova iz APK/IPA

Da biste pristupili asamblejama u APK/IPA, raspakujte datoteku i istražite direktorijum asambleja. Za Android, alati poput XamAsmUnZ i xamarin-decompress mogu dekompresovati dll fajlove.

python3 xamarin-decompress.py -o /path/to/decompressed/apk

Za assembly blobove u Androidu, pyxamstore može da ih raspakuje.

pyxamstore unpack -d /path/to/decompressed/apk/assemblies/

iOS dll datoteke su lako dostupne za dekompilaciju, otkrivajući značajne delove koda aplikacije, koji često dele zajedničku osnovu na različitim platformama.

Dinamička analiza

Dinamička analiza uključuje proveru SSL pinovanja i korišćenje alata kao što je Fridax za runtime modifikacije .NET binarnih datoteka u Xamarin aplikacijama. Frida skripte su dostupne za zaobilaženje detekcije root-a ili SSL pinovanja, poboljšavajući analitičke mogućnosti.

Druge zanimljive Frida skripte:

Dodatne informacije

Support HackTricks

Last updated