wisamidris77/xamarin-unpacker

GitHub: wisamidris77/xamarin-unpacker

从 Xamarin Android 应用的 blob 文件中批量提取并验证 .NET DLL 程序集的命令行工具。

Stars: 1 | Forks: 0

# 🔓 Xamarin Assembly Unpacker [![GitHub](https://img.shields.io/badge/GitHub-wisamidris77%2Fxamarin--unpacker-blue?logo=github)](https://github.com/wisamidris77/xamarin-unpacker) [![.NET](https://img.shields.io/badge/.NET-9.0-purple?logo=.net)](https://dotnet.microsoft.com/) [![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) 轻松地从 Xamarin Android APK 文件中提取 DLL 程序集,用于逆向工程、分析和教育目的。 ## ✨ 功能 🚀 **广泛兼容** - 支持所有 Xamarin 应用架构(ARM64、ARMv7、x86、x86_64) ⚡ **高级提取** - 具备自动格式检测的多种提取方法 🗜️ **LZ4 解压缩** - 内置支持压缩的 Xamarin 程序集 📁 **智能整理** - 自动按架构对提取的 DLL 进行分类整理 ✅ **程序集验证** - 验证提取的 DLL 并修复常见问题 📝 **详细日志** - 提供全面的日志以供故障排除 🔧 **自动检测** - 自动检测 XABA AssemblyStore 格式 ## 🛠️ 环境要求 - **.NET 9.0** 或更高版本 - **Windows、Linux 或 macOS** ## 🚀 快速开始 ### 1. 克隆仓库 ``` git clone https://github.com/wisamidris77/xamarin-unpacker.git cd xamarin-unpacker ``` ### 2. 构建应用程序 ``` dotnet build --configuration Release ``` ### 3. 运行提取器 ``` # 基本用法 ./XamarinBlobConverter.exe [input_folder] [output_folder] # 示例 ./XamarinBlobConverter.exe "C:\path\to\assemblies" "C:\path\to\output" ``` ## 📖 使用指南 ### 命令行使用 ``` XamarinBlobConverter.exe ``` **参数:** - `input_assemblies_folder` - 包含 Xamarin blob 文件的文件夹路径 - `output_folder` - 提取的 DLL 文件的保存位置 ### 交互模式 不带参数运行以进行引导式设置: ``` XamarinBlobConverter.exe ``` 应用程序将提示您输入: 1. 输入文件夹路径 2. 输出文件夹路径 ## 📂 输入文件 将以下文件放置在您的输入目录中: | 文件 | 描述 | 是否必需 | |------|-------------|----------| | `assemblies.blob` | 主程序集 blob | ✅ **必需** | | `assemblies.manifest` | 程序集清单 | ⭐ **推荐** | | `assemblies.arm64_v8a.blob` | ARM64 程序集 | ⚪ 可选 | | `assemblies.armeabi_v7a.blob` | ARMv7 程序集 | ⚪ 可选 | | `assemblies.x86.blob` | x86 程序集 | ⚪ 可选 | | `assemblies.x86_64.blob` | x86_64 程序集 | ⚪ 可选 | ## 📁 输出结构 ``` output_folder/ ├── assemblies/ │ ├── MyApp.dll │ ├── Xamarin.Forms.dll │ └── Microsoft.Maui.Controls.dll ├── assemblies.arm64_v8a/ │ └── [ARM64 specific DLLs] ├── assemblies.x86/ │ └── [x86 specific DLLs] ├── invalid/ │ └── [Corrupted or invalid files] └── conversion_log_[timestamp].txt ``` ## 🔍 如何获取 Xamarin Blob 文件 ### 从 Android APK 中获取 1. 使用任何 ZIP 工具或 `apktool` **解压 APK** 2. **导航**至 `/unknown/assemblies/` 文件夹 3. **复制**所有 `.blob` 和 `.manifest` 文件 ### 典型的 APK 结构 ``` your_app.apk └── unknown/ └── assemblies/ ├── assemblies.blob ├── assemblies.manifest ├── assemblies.arm64_v8a.blob └── assemblies.armeabi_v7a.blob ``` ## 🎯 示例 ### 基础提取 ``` # 从解包的 APK 中提取 XamarinBlobConverter.exe "C:\MyApp\unknown\assemblies" "C:\ExtractedDLLs" ``` ### 批处理 ``` # 处理多个应用 for /d %i in ("C:\UnpackedApps\*") do ( XamarinBlobConverter.exe "%i\unknown\assemblies" "C:\AllExtracted\%~ni" ) ``` ### PowerShell 单行命令 ``` # 提取并打开输出文件夹 $input = "C:\path\to\assemblies"; $output = "C:\extracted"; .\bin\Release\net9.0\XamarinBlobConverter.exe $input $output; explorer $output ``` ## 🔧 故障排除 ### ❌ 未提取到 DLL - ✅ 确认 blob 文件存在 - ✅ 检查输入文件夹路径是否正确 - ✅ 确保文件来自 Xamarin 应用 - ✅ 查看日志文件以排查错误 ### ❌ 无效的 DLL 文件 - ✅ 文件会自动移动到 `invalid/` 文件夹 - ✅ 检查日志以获取验证详细信息 - ✅ 某些资源 DLL 可能显示为无效,但实际是正确的 ### ❌ 权限错误 - ✅ 以管理员身份运行(Windows) - ✅ 检查文件夹写入权限 - ✅ 确保防病毒软件没有拦截 ## 📊 提取成功指标 ✅ **绿色的 "SUCCESS" 消息** - DLL 已提取并验证通过 ⚠️ **黄色的 "WARNING" 消息** - 存在轻微问题,请检查日志 ❌ **红色的 "ERROR" 消息** - 提取失败,请参阅故障排除 ### 成功输出示例 ``` ✓ VALID: MyApp.dll ✓ VALID: Xamarin.Forms.dll ✓ VALID: Microsoft.Maui.Controls.dll Validation Summary: Valid assemblies: 45 Invalid assemblies: 2 Total processed: 47 SUCCESS: Successfully extracted 45 valid .NET assemblies! ``` ## 🛡️ 安全与法律 ### ⚖️ 法律声明 - 仅供**教育与研究**目的使用 - **尊重软件许可证**和服务条款 - **拥有或已获得授权**才能分析相关应用程序 - **遵守当地有关**逆向工程的法律 ### 🔒 隐私 - **不收集数据** - 完全在本地运行 - **无网络连接** - 完全离线操作 - **无遥测** - 您的文件将保持私密 ## 📞 支持 - 🐛 **问题反馈**:[GitHub Issues](https://github.com/wisamidris77/xamarin-unpacker/issues) - 💬 **讨论交流**:[GitHub Discussions](https://github.com/wisamidris77/xamarin-unpacker/discussions) - 📧 **联系方式**:提交 issue 以获取支持
标签:APK分析, Hakrawler, Xamarin, 云资产清单, 目录枚举, 移动安全, 端点检测与响应, 脱壳工具, 逆向工程