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 є платформою з відкритим кодом, призначеною для розробників для створення додатків для iOS, Android та Windows з використанням фреймворків .NET та C#. Ця платформа надає доступ до численних інструментів та розширень для ефективного створення сучасних додатків.
Для 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 framework включає збірки, класи та простори імен для розробки додатків, при цьому .NET Runtime керує виконанням коду. Він пропонує незалежність від платформи та зворотну сумісність. Mono Framework є версією .NET framework з відкритим кодом, ініційованою в 2005 році для розширення .NET на Linux, тепер підтримується Microsoft і очолюється Xamarin.
Декомпіляція перетворює скомпільований код назад у вихідний код. У Windows вікно Модулі у Visual Studio може ідентифікувати модулі для декомпіляції, що дозволяє отримати прямий доступ до коду третіх сторін та витягти вихідний код для аналізу.
Android підтримує Just-In-Time (JIT) та Ahead-Of-Time (AOT) компіляцію, з гібридним режимом AOT для оптимальної швидкості виконання. Повна AOT є ексклюзивною для корпоративних ліцензій.
iOS використовує лише AOT компіляцію через обмеження Apple на динамічне виконання коду.
Щоб отримати доступ до збірок в APK/IPA, розпакуйте файл і досліджуйте каталог збірок. Для Android інструменти, такі як XamAsmUnZ та xamarin-decompress, можуть розпаковувати dll файли.
У випадках, коли після декомпіляції APK можливо побачити папку unknown/assemblies/ з файлами .dll
всередині, можна використовувати dnSpy безпосередньо над .dll
для їх аналізу.
Однак іноді в папці unknown/assemblies/ знаходять файли assemblies.blob
та assemblies.manifest
. Інструмент pyxamstore можна використовувати для розпакування файлу assemblies.blob
в додатках Xamarin, що дозволяє отримати доступ до .NET збірок для подальшого аналізу:
iOS dll файли легко доступні для декомпіляції, що відкриває значні частини коду програми, який часто має спільну основу на різних платформах.
Після отримання .dll
можна статично аналізувати .Net код, використовуючи інструменти, такі як dnSpy або ILSpy, які дозволять змінювати код програми. Це може бути дуже корисно для модифікації програми, щоб обійти захист, наприклад.
Зверніть увагу, що після модифікації програми вам потрібно буде знову упакувати її та підписати.
Динамічний аналіз включає перевірку на SSL pinning та використання інструментів, таких як Fridax для модифікацій .NET бінарних файлів у Xamarin додатках під час виконання. Доступні скрипти Frida для обходу виявлення root або SSL pinning, що покращує можливості аналізу.
Інші цікаві скрипти Frida:
Інструмент Uber APK Signer спрощує підписування кількох APK з одним і тим же ключем і може бути використаний для повторного підписування програми після внесення змін.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)