Xamarin Apps
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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.
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 okvir uključuje asambleje, klase i imenske prostore za razvoj aplikacija, pri čemu .NET Runtime upravlja izvršavanjem koda. Nudi nezavisnost od platforme i unazad kompatibilnost. Mono Okvir je verzija .NET okvira 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.
Dekompilacija transformiše kompajlirani kod nazad u izvorni kod. U Windows-u, prozor Moduli u Visual Studio-u može identifikovati module za dekompilaciju, omogućavajući direktan pristup kodu trećih strana i ekstrakciju izvornog koda za analizu.
Android podržava Just-In-Time (JIT) i Ahead-Of-Time (AOT) kompilaciju, sa hibridnim AOT režimom za optimalnu brzinu izvršavanja. Potpuna AOT je ekskluzivna za Enterprise licence.
iOS koristi isključivo AOT kompilaciju zbog Apple-ovih ograničenja na dinamičko izvršavanje koda.
Da biste pristupili asamblejama u APK/IPA, raspakujte fajl i istražite direktorijum asambleja. Za Android, alati poput XamAsmUnZ i xamarin-decompress mogu dekompresovati dll fajlove.
U slučajevima kada nakon dekompilacije APK-a može da se vidi folder unknown/assemblies/ sa .dll
datotekama unutar njega, moguće je koristiti dnSpy direktno na .dll
datotekama za analizu.
Međutim, ponekad se unutar foldera unknown/assemblies/ nalaze datoteke assemblies.blob
i assemblies.manifest
. Alat pyxamstore može se koristiti za raspakivanje datoteke assemblies.blob
u Xamarin aplikacijama, omogućavajući pristup .NET skupovima za dalju analizu:
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.
Kada se dobiju .dll
datoteke, moguće je statički analizirati .Net kod koristeći alate kao što su dnSpy ili ILSpy koji omogućavaju modifikaciju koda aplikacije. Ovo može biti veoma korisno za manipulaciju aplikacijom kako bi se zaobišle zaštite, na primer.
Imajte na umu da nakon modifikacije aplikacije, biće potrebno ponovo je spakovati i ponovo potpisati.
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 mogućnosti analize.
Druge zanimljive Frida skripte:
Alat Uber APK Signer pojednostavljuje potpisivanje više APK-ova sa istim ključem, i može se koristiti za ponovno potpisivanje aplikacije nakon što su izvršene izmene.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)