本文主要记录了在 Redmi K30(4G 版)MIUI13 Android 12 设备上进行 BL 解锁、Root、LSPosed 安装、SSL 证书安装的过程,以及很多踩过的坑,并列出了所有用到的工具地址。
前言
之前一直使用 VMOS 进行抓包和逆向(主要是在 Android 5.1 上完成),虽然抓包没什么问题,但是逆向有个硬伤,就是无法使用 Frida(一个逆向工具),因此我希望能在真机上进行抓包和逆向。
手头上只有一台 Redmi K30(4G 版),也是我日常使用到的设备,虽然知道 Root 有风险,不过我还是能承担这个风险。
环境
设备:Redmi K30(4G 版)
安卓版本:Android 12
MIUI 版本:MIUI-V13.0.1.0.SGHCNXM
电脑操作系统:Windows 11
正文
解锁 BL
Root 的第一步是需要解锁 BL。
BL 全名为 BootLoader,它在手机安全启动规范中属较底层的一环。
需要解锁 BL 的理由是:
BL 锁主要作用是验证加载对象签名,防止启动第三方 ROM 或 Recovery,避免由此带来的数据安全风险。同时限制了 Fastboot 方式刷机(线刷),防范手机在没有授权的情况下被刷机。对于合法刷机需求,小米保留有 BL 解锁渠道,在解锁后才能使用线刷方式刷机。
小米的设备有个好处,就是可以使用官方工具很轻松地解锁 BL。解锁工具和方法参考官方文档即可:
申请解锁小米手机 (miui.com)www.miui.com/unlock/index.html
Root
解锁 BL 后,就可以进行 Root 了。Root 方法可以参考这篇文章:
[小米手机获取 Root 权限教程(详细图文)miuiver.com/how-to-root-xiaomi-phone/
小米手机获取 Root 权限教程(详细图文) – MIUI历史版本 (miuiver.com)
该文章“Magisk 安装-2”中需要下载 ROM,这里有免费的小米 ROM 下载网站:
小米 ROM 线刷包, 卡刷包的最新及历史版本下载xiaomirom.com/
该文章“Magisk 安装-4”中的命令,我使用的是“未采用 Virtual A/B 分区的旧机型”。
LSPosed
Root 完成后,就可以进行后续操作了。比较常见的便是安装 Xposed,对该框架的介绍这里省略。不过,由于 Xposed 年久失修,自从 Android 7.0 之后 Xposed 的开发者 rovo89 基本就不维护了,针对 Android 8.0 的版本草草发布了一个测试版本撒手不管了。[3]
Xposed 的后继者是 EdXposed,不过根据截至编写此文章最新的 README.md 来看,目前最高只支持 Android 11,因此这里不考虑安装。
后面我找到另外一个叫 LSPosed 的框架,支持 Android 12,因此我安装了这个框架。这里简单介绍一下安装过程:
- 在 Magisk 里头,点击右上角的“齿轮”图标进入设置,在“Magisk”部分打开“Zygisk”开关,然后重启手机。
- 下载 LSPosed,注意选择带有“Zygisk”字样的 Zip 文件(如:LSPosed-v1.8.3-6552-zygisk-release.zip),然后将该文件导入到手机存储里面(可以使用 adb push,这里不过多介绍)。
- 在 Magisk 下面底部菜单栏找到“模块”位置,点击上面的“从本地安装”按钮,选择刚刚导入的 Zip 文件,等待安装完毕后重启手机即可。
等待手机重启完毕后,如果安装成功的话,应该可以看到桌面上多了个 LSPosed 应用,然后就可以在这个应用里面下载各种模块了,因为我目前还没安装任何模块,所以这里就不过多介绍了。
SSL 证书安装
如果想抓取网络数据包的话,需要安装抓包工具导出的 SSL 证书到手机里面,理由是如果不安装 SSL 证书,抓包工具只能抓到明文流量(HTTP),而不能抓到加密流量(HTTPS),而现阶段绝大多数应用和网站均启用了 HTTPS。
这一步研究了很久,首先,不能直接把 SSL 证书安装为用户证书,因为安卓 7.0 后,系统不再信任用户证书,差不多相当于这个功能废了。因此,我们需要把 SSL 证书安装为根证书,这一步需要之前的 Root 操作。
按照传统做法,我们需要将证书改个特定的名称,然后开启 Root 权限后使用 RE 管理器或者 adb,将证书复制到 /system/etc/security/cacerts/ 目录下,但是经过我的测试,我的设备目前 /system 目录为只读模式,即使是 Root 过也不能往里面写入内容,尝试了各种方法均无效。
根据网上查的资料得知好像是 Android 8 (还是 10 后,不太记得清了)以后,即使是 Root 过的设备也不能修改 /system 文件夹下的内容(还有根目录下的一些特定文件夹)。因此这里需要使用一种特殊的方法安装根证书。
我使用的抓包工具是 Fiddler Classic,根证书安装方法如下:
- 手机 Magisk 安装 MagiskTrustUserCerts 模块,安装方法同 3.3 LSPosed 一样。
- 启动 Fiddler,在菜单栏 - Tools - Options - HTTPS - Actions 按钮下,点击“Export Root Certificate to Desktop”,导出证书到电脑桌面。
- 将证书导入到手机存储中。
- 手机设置搜索“加密与凭据”,点击“安装证书”,然后选择刚刚导入的证书,命个名完成安装。
- 重启手机。
根据 MagiskTrustUserCerts 仓库说明得知,该模块会通过在系统启动的时候把用户安装证书复制到系统证书对应的目录下,从而达到安装根证书的目的。
后记
全部步骤完成后,我的手机目前能顺利进行抓包、调试、逆向等操作了。在这个折腾的过程确实有很多坑,希望这篇文章能给大家带来一点帮助。
参考
- 小米手机 BL 解锁操作指南 – MIUI历史版本 (miuiver.com) https://miuiver.com/how-to-unlock-xiaomi-phone/
- 小米手机 BL 解锁操作指南 – MIUI历史版本 (miuiver.com) https://miuiver.com/how-to-unlock-xiaomi-phone/
- 后Xposed时代: 一篇文章看懂如何安装和使用Edxposed https://blog.coderstory.cn/guide-install-edxposed/