# Xamarin Apps {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} This is a summary of the blog post [https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers](https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers) ## **Basic Information** Xamarin є **платформою з відкритим кодом**, призначеною для розробників для **створення додатків для iOS, Android та Windows** з використанням фреймворків .NET та C#. Ця платформа надає доступ до численних інструментів та розширень для ефективного створення сучасних додатків. ### Архітектура Xamarin - Для **Android** Xamarin інтегрується з Android та Java просторами імен через .NET зв'язки, працюючи в середовищі виконання Mono разом з Android Runtime (ART). Managed Callable Wrappers (MCW) та Android Callable Wrappers (ACW) полегшують зв'язок між Mono та ART, обидва з яких побудовані на ядрі Linux. - Для **iOS** додатки працюють під управлінням середовища виконання Mono, використовуючи повну компіляцію Ahead of Time (AOT) для перетворення коду C# .NET в ARM асемблерну мову. Цей процес працює разом з Objective-C Runtime на ядрі, подібному до UNIX. ### .NET Runtime та Mono Framework **.NET фреймворк** включає збірки, класи та простори імен для розробки додатків, при цьому .NET Runtime керує виконанням коду. Він пропонує незалежність від платформи та зворотну сумісність. **Mono Framework** є версією .NET фреймворку з відкритим кодом, ініційованою в 2005 році для розширення .NET на Linux, тепер підтримується Microsoft і очолюється Xamarin. ### Реверс-інжиніринг додатків Xamarin #### Декомпіляція збірок Xamarin Декомпіляція перетворює скомпільований код назад у вихідний код. У Windows вікно Модулі в Visual Studio може ідентифікувати модулі для декомпіляції, що дозволяє безпосередній доступ до стороннього коду та витягування вихідного коду для аналізу. #### JIT проти AOT компіляції - **Android** підтримує Just-In-Time (JIT) та Ahead-Of-Time (AOT) компіляцію, з гібридним режимом AOT для оптимальної швидкості виконання. Повна AOT є ексклюзивною для корпоративних ліцензій. - **iOS** використовує лише AOT компіляцію через обмеження Apple на динамічне виконання коду. ### Витягування dll файлів з APK/IPA Щоб отримати доступ до збірок в APK/IPA, розпакуйте файл і досліджуйте каталог збірок. Для Android інструменти, такі як [XamAsmUnZ](https://github.com/cihansol/XamAsmUnZ) та [xamarin-decompress](https://github.com/NickstaDB/xamarin-decompress), можуть розпаковувати dll файли. ```bash python3 xamarin-decompress.py -o /path/to/decompressed/apk ``` Для збірки блобів в Android, [pyxamstore](https://github.com/jakev/pyxamstore) може їх розпакувати. ```bash pyxamstore unpack -d /path/to/decompressed/apk/assemblies/ ``` iOS dll файли легко доступні для декомпіляції, що відкриває значні частини коду програми, який часто має спільну базу на різних платформах. ### Динамічний аналіз Динамічний аналіз передбачає перевірку на SSL pinning та використання інструментів, таких як [Fridax](https://github.com/NorthwaveSecurity/fridax), для модифікацій .NET бінарних файлів у додатках Xamarin під час виконання. Скрипти Frida доступні для обходу виявлення root або SSL pinning, що покращує можливості аналізу. Інші цікаві скрипти Frida: * [**xamarin-antiroot**](https://codeshare.frida.re/@Gand3lf/xamarin-antiroot/) * [**xamarin-root-detect-bypass**](https://codeshare.frida.re/@nuschpl/xamarin-root-detect-bypass/) * [**Frida-xamarin-unpin**](https://github.com/GoSecure/frida-xamarin-unpin) ## Додаткова інформація * [https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers](https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers) * [https://thecobraden.com/posts/unpacking\_xamarin\_assembly\_stores/](https://thecobraden.com/posts/unpacking\_xamarin\_assembly\_stores/) {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}