Xamarin Apps
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.
Za assembly blobove u Androidu, pyxamstore može da ih raspakuje.
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
Last updated