# 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 %}