Xamarin Apps

从零开始学习 AWS 黑客技术,成为专家 htARTE(HackTricks AWS 红队专家)

支持 HackTricks 的其他方式:

这是博客文章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,可以使用 XamAsmUnZxamarin-decompress 等工具解压缩 dll 文件。

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

对于 Android 中的汇编 blob,pyxamstore 可以对其进行解包。

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

iOS的dll文件可以轻松访问并进行反编译,揭示应用程序代码的重要部分,这些部分通常在不同平台上共享相同的基础。

动态分析

动态分析涉及检查SSL绑定并使用类似Fridax的工具对Xamarin应用程序中的.NET二进制文件进行运行时修改。Frida脚本可用于绕过root检测或SSL绑定,增强分析能力。

其他有趣的Frida脚本:

更多信息

从零开始学习AWS黑客技术,成为专家 htARTE (HackTricks AWS Red Team Expert)!

支持HackTricks的其他方式:

最后更新于