# Aplicativos Xamarin
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras maneiras de apoiar o HackTricks:
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
Este é um resumo do post do blog [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)
## **Informações Básicas**
Xamarin é uma plataforma **open-source** projetada para desenvolvedores **construírem aplicativos para iOS, Android e Windows** usando os frameworks .NET e C#. Esta plataforma oferece acesso a numerosas ferramentas e extensões para criar aplicativos modernos de forma eficiente.
### Arquitetura do Xamarin
- Para **Android**, o Xamarin integra-se com os namespaces do Android e Java por meio de ligações .NET, operando dentro do ambiente de execução Mono ao lado do Android Runtime (ART). Managed Callable Wrappers (MCW) e Android Callable Wrappers (ACW) facilitam a comunicação entre Mono e ART, ambos construídos no kernel Linux.
- Para **iOS**, os aplicativos são executados sob o tempo de execução Mono, utilizando a compilação Ahead of Time (AOT) completa para converter o código C# .NET em linguagem de montagem ARM. Esse processo é executado ao lado do Objective-C Runtime em um kernel semelhante ao UNIX.
### .NET Runtime e Mono Framework
O **framework .NET** inclui assemblies, classes e namespaces para o desenvolvimento de aplicativos, com o .NET Runtime gerenciando a execução de código. Ele oferece independência de plataforma e compatibilidade com versões anteriores. O **Mono Framework** é uma versão open-source do framework .NET, iniciada em 2005 para estender o .NET para o Linux, agora suportada pela Microsoft e liderada pela Xamarin.
### Engenharia Reversa de Aplicativos Xamarin
#### Decompilação de Assemblies Xamarin
A decompilação transforma o código compilado de volta em código-fonte. No Windows, a janela Módulos no Visual Studio pode identificar módulos para decompilação, permitindo acesso direto ao código de terceiros e extração do código-fonte para análise.
#### Compilação JIT vs AOT
- **Android** suporta compilação Just-In-Time (JIT) e Ahead-Of-Time (AOT), com um modo AOT híbrido para velocidade de execução ideal. O AOT completo é exclusivo para licenças Enterprise.
- **iOS** emprega exclusivamente a compilação AOT devido às restrições da Apple sobre a execução de código dinâmico.
### Extração de Arquivos dll de APK/IPA
Para acessar os assemblies em um APK/IPA, descompacte o arquivo e explore o diretório de assemblies. Para Android, ferramentas como [XamAsmUnZ](https://github.com/cihansol/XamAsmUnZ) e [xamarin-decompress](https://github.com/NickstaDB/xamarin-decompress) podem descompactar arquivos dll.
```bash
python3 xamarin-decompress.py -o /path/to/decompressed/apk
```
Para os blobs de assembly no Android, o [pyxamstore](https://github.com/jakev/pyxamstore) pode desempacotá-los.
```bash
pyxamstore unpack -d /path/to/decompressed/apk/assemblies/
```
Os arquivos dll do iOS são facilmente acessíveis para descompilação, revelando partes significativas do código do aplicativo, que frequentemente compartilha uma base comum em diferentes plataformas.
### Análise Dinâmica
A análise dinâmica envolve a verificação de SSL pinning e o uso de ferramentas como [Fridax](https://github.com/NorthwaveSecurity/fridax) para modificações em tempo de execução do binário .NET em aplicativos Xamarin. Scripts do Frida estão disponíveis para contornar a detecção de root ou SSL pinning, aprimorando as capacidades de análise.
Outros scripts interessantes do 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)
## Mais informações
* [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/)
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras maneiras de apoiar o HackTricks:
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).