Xamarin Apps
Hierdie is 'n opsomming van die blogpos https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers
Basiese Inligting
Xamarin is 'n open-source platform wat ontwikkel is vir ontwikkelaars om programme vir iOS, Android en Windows te bou met behulp van die .NET en C# raamwerke. Hierdie platform bied toegang tot verskeie gereedskap en uitbreidings om moderne toepassings doeltreffend te skep.
Xamarin se Argitektuur
Vir Android integreer Xamarin met Android- en Java-naamruimtes deur .NET-bindings, wat binne die Mono-uitvoeringsomgewing saam met die Android Runtime (ART) werk. Managed Callable Wrappers (MCW) en Android Callable Wrappers (ACW) fasiliteer kommunikasie tussen Mono en ART, wat albei op die Linux-kernel gebaseer is.
Vir iOS loop programme onder die Mono-runtime en maak volledige Ahead of Time (AOT) samestelling gebruik om C# .NET-kode na ARM-assambleertaal om te skakel. Hierdie proses loop saam met die Objective-C Runtime op 'n UNIX-soortgelyke kernel.
.NET Runtime en Mono Raamwerk
Die .NET-raamwerk sluit samestellings, klasse en naamruimtes vir toepassingsontwikkeling in, met die .NET Runtime wat kode-uitvoering bestuur. Dit bied platform-onafhanklikheid en agterwaartse versoenbaarheid. Die Mono-raamwerk is 'n open-source weergawe van die .NET-raamwerk, wat in 2005 begin is om .NET na Linux uit te brei, en word nou ondersteun deur Microsoft en gelei deur Xamarin.
Reverse Engineering van Xamarin Apps
Decompilering van Xamarin-samestellings
Decompilering omskep saamgestelde kode terug na bronkode. In Windows kan die Modules-venster in Visual Studio modules identifiseer vir decompilering, wat direkte toegang tot derdeparty-kode en die onttrekking van bronkode vir analise moontlik maak.
JIT vs AOT Samestelling
Android ondersteun Just-In-Time (JIT) en Ahead-Of-Time (AOT) samestelling, met 'n Hybrid AOT-modus vir optimale uitvoerspoed. Volledige AOT is eksklusief vir Enterprise-lisensies.
iOS gebruik slegs AOT-samestelling as gevolg van Apple se beperkings op dinamiese kode-uitvoering.
Onttrekking van dll-lêers uit APK/IPA
Om toegang te verkry tot die samestellings in 'n APK/IPA, pak die lêer uit en verken die samestellingsgids. Vir Android kan gereedskap soos XamAsmUnZ en xamarin-decompress dll-lêers ontkomprimeer.
Vir saamgestelde blobs in Android, kan pyxamstore hulle uitpak.
iOS dll-lêers is maklik toeganklik vir dekompilering, wat beduidende dele van die toepassingskode onthul, wat dikwels 'n gemeenskaplike basis deel oor verskillende platforms.
Dinamiese Analise
Dinamiese analise behels die nagaan van SSL-pinning en die gebruik van hulpmiddels soos Fridax vir tydveranderinge van die .NET-binêre lêer in Xamarin-toepassings. Frida-skripte is beskikbaar om wortelopsporing of SSL-pinning te omseil en analise-vermoëns te verbeter.
Ander interessante Frida-skripte:
Verdere inligting
Last updated