# Xamarin 应用
从零开始学习 AWS 黑客技术,成为专家 htARTE(HackTricks AWS 红队专家) 支持 HackTricks 的其他方式: * 如果您想看到您的**公司在 HackTricks 中做广告**或**下载 PDF 版本的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com) * 探索[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFT**](https://opensea.io/collection/the-peass-family)收藏品 * **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live) 上**关注**我们。 * 通过向 [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来**分享您的黑客技巧**。
这是博客文章[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)的摘要 ## **基本信息** Xamarin 是一个为开发人员设计的**开源平台**,可使用 .NET 和 C# 框架**构建 iOS、Android 和 Windows 应用**。该平台提供访问众多工具和扩展,以高效创建现代应用程序。 ### Xamarin 的架构 - 对于**Android**,Xamarin 通过 .NET 绑定与 Android 和 Java 命名空间集成,在 Mono 执行环境中与 Android Runtime (ART) 一起运行。托管可调用包装器 (MCW) 和 Android 可调用包装器 (ACW) 促进了 Mono 和 ART 之间的通信,两者都建立在 Linux 内核上。 - 对于**iOS**,应用程序在 Mono 运行时下运行,利用完全的 Ahead of Time (AOT) 编译将 C# .NET 代码转换为 ARM 汇编语言。此过程与 Objective-C Runtime 在类 UNIX 内核上运行。 ### .NET 运行时和 Mono 框架 **.NET 框架**包括用于应用程序开发的程序集、类和命名空间,.NET 运行时管理代码执行。它提供平台独立性和向后兼容性。**Mono 框架**是 .NET 框架的开源版本,于 2005 年启动,旨在将 .NET 扩展到 Linux,现在得到 Microsoft 的支持,并由 Xamarin 领导。 ### 反向工程 Xamarin 应用 #### 反编译 Xamarin 程序集 反编译将编译后的代码转换回源代码。在 Windows 中,Visual Studio 的模块窗口可以识别用于反编译的模块,从而直接访问第三方代码并提取源代码进行分析。 #### JIT vs AOT 编译 - **Android**支持即时 (JIT) 和提前 (AOT) 编译,具有混合 AOT 模式以获得最佳执行速度。完全 AOT 仅适用于企业许可证。 - **iOS**由于苹果对动态代码执行的限制,仅使用 AOT 编译。 ### 从 APK/IPA 中提取 dll 文件 要访问 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 中的汇编 blob,[pyxamstore](https://github.com/jakev/pyxamstore) 可以对其进行解包。 ```bash pyxamstore unpack -d /path/to/decompressed/apk/assemblies/ ``` iOS的dll文件可以轻松访问并进行反编译,揭示应用程序代码的重要部分,这些部分通常在不同平台上共享相同的基础。 ### 动态分析 动态分析涉及检查SSL绑定并使用类似[Fridax](https://github.com/NorthwaveSecurity/fridax)的工具对Xamarin应用程序中的.NET二进制文件进行运行时修改。Frida脚本可用于绕过root检测或SSL绑定,增强分析能力。 其他有趣的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/)
从零开始学习AWS黑客技术,成为专家 htARTE (HackTricks AWS Red Team Expert)! 支持HackTricks的其他方式: * 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! * 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com) * 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[NFTs](https://opensea.io/collection/the-peass-family)收藏品 * **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**上关注**我们。 * 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。