Xamarin Apps

支持 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 运行时下运行,利用完整的提前编译 (AOT) 将 C# .NET 代码转换为 ARM 汇编语言。此过程与 UNIX 类内核上的 Objective-C 运行时一起运行。

.NET 运行时和 Mono 框架

.NET 框架 包含用于应用程序开发的程序集、类和命名空间,.NET 运行时管理代码执行。它提供平台独立性和向后兼容性。Mono 框架 是 .NET 框架的开源版本,始于 2005 年,旨在将 .NET 扩展到 Linux,现在由 Microsoft 支持并由 Xamarin 主导。

反向工程 Xamarin 应用

Xamarin 程序集的反编译

反编译将编译后的代码转换回源代码。在 Windows 中,Visual Studio 的模块窗口可以识别可反编译的模块,允许直接访问第三方代码并提取源代码进行分析。

JIT 与 AOT 编译

  • Android 支持即时编译 (JIT) 和提前编译 (AOT),并具有混合 AOT 模式以实现最佳执行速度。完整 AOT 仅限于企业许可证。

  • iOS 仅采用 AOT 编译,因为 Apple 对动态代码执行有严格限制。

从 APK/IPA 中提取 dll 文件

要访问 APK/IPA 中的程序集,请解压文件并浏览程序集目录。对于 Android,可以使用 XamAsmUnZxamarin-decompress 等工具解压 dll 文件。

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

对于Android中的assembly blobs,pyxamstore可以解压它们。

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

iOS dll 文件可以轻松访问以进行反编译,揭示了应用程序代码的显著部分,这些代码通常在不同平台之间共享一个共同的基础。

动态分析

动态分析涉及检查 SSL 钉扎,并使用像 Fridax 这样的工具对 Xamarin 应用中的 .NET 二进制文件进行运行时修改。Frida 脚本可用于绕过根检测或 SSL 钉扎,从而增强分析能力。

其他有趣的 Frida 脚本:

进一步信息

支持 HackTricks

Last updated