SuperAPI AI 工具集

reversing-xamarin-maui

安全与审计

查看项目

更新于 10-16 02:31

技能介绍

用途:逆向 Xamarin 与 .NET MAUI 移动应用。这类应用把完整 .NET 程序藏在 APK/IPA 中,提取并解压 assemblies 后可得到接近源码质量的 C#,但需先突破容器格式。

适用判断:APK 含 lib//libmonodroid.so、libmonosgen-2.0.so 或 libxamarin-app.so,或含 assemblies/assemblies.blob、assemblies/.dll;jadx 只显示 mono.MonoPackageManager 与 Xamarin 引导类;IPA 含 .dll 或 Frameworks/Mono* 布局。不适用:Unity(用 reversing-unity-il2cpp)、Flutter/React Native、TLS 拦截问题(用 bypassing-mobile-pinning)、NativeAOT(用 analyzing-binaries)。

识别打包代际:unzip -l target.apk | rg 'assemblies|libmonodroid|libxamarin|libmonosgen'。经典未压缩 DLL 可直接解压反编译;以 XALZ 开头的是 LZ4 压缩,需先解压;assemblies.blob + .manifest 属 AssemblyStore,用 pyxamstore 解包;.NET 6+/MAUI 的 assemblies 嵌在 libxamarin-app.so 中,需从共享库提取。可用 xxd 查看前四字节判断:4d5a 为 MZ 普通 PE,58414c5a 为 XALZ。

提取:AssemblyStore 用 pyxamstore unpack -d ./out target.apk;XALZ 用 lz4.block 解压脚本处理;MAUI 用 binwalk -Me 从 libxamarin-app.so 中 carve。得到 .dll 后按普通 .NET 处理:ilspycmd ./out/YourApp.dll -o ./decompiled,或用 dnSpy/dnSpyEx/dotPeek,并用 rg 搜索 URL、ApiKey、ConnectionString、Bearer、password。优先看以产品命名的程序集,Mono.Android.dll、System.、Xamarin. 为框架自带。

运行时 Hook:Frida 的 Java bridge 看不到 Mono 方法,需用 Mono 感知的插桩,如 frida-mono-api.js、Fridax,通过 mono_get_root_domain、mono_assembly_foreach、mono_class_get_methods、mono_compile_method 解析托管方法到原生地址后 Interceptor.attach。建议先反编译定位类与方法再 Hook。Xamarin 的证书校验在托管层,涉及 ServicePointManager.ServerCertificateValidationCallback 与 HttpClientHandler.ServerCertificateCustomValidationCallback,通用 Android pinning 绕过无效。

常见发现:C# 中硬编码密钥、客户端含完整后端逻辑、返回 true 的自定义证书回调、不安全本地存储、含凭据或离线数据集的 SQLite。

重打包:在 dnSpy 中改 IL 保存程序集,pyxamstore pack -d ./out 重建 assemblies.blob,再 apktool b target -o patched.apk && apksigner sign --ks debug.keystore patched.apk。必须精确复现原容器格式,否则启动时原生崩溃;仅需观察时优先运行时 Hook。

限制:资料未提供具体版本兼容性、授权范围与法律合规说明,使用前需自行确认目标授权。