Xamarin Apps

Support HackTricks

This is a summary of the blog post 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 та xamarin-decompress, можуть розпаковувати dll файли.

python3 xamarin-decompress.py -o /path/to/decompressed/apk

Для збірки блобів в Android, pyxamstore може їх розпакувати.

pyxamstore unpack -d /path/to/decompressed/apk/assemblies/

iOS dll файли легко доступні для декомпіляції, що відкриває значні частини коду програми, який часто має спільну базу на різних платформах.

Динамічний аналіз

Динамічний аналіз передбачає перевірку на SSL pinning та використання інструментів, таких як Fridax, для модифікацій .NET бінарних файлів у додатках Xamarin під час виконання. Скрипти Frida доступні для обходу виявлення root або SSL pinning, що покращує можливості аналізу.

Інші цікаві скрипти Frida:

Додаткова інформація

Support HackTricks

Last updated