逆向前期准备工作
移动设备
1. 设备解锁
1.1 Redmi 12C
更新驱动
- 网址:https://www.mi.com/c/service/download/index.html
- 【手机驱动】 => 【MIUI V4或V5版本的小米手机驱动】
- 手机连接电脑后,【设备管理器】 => 【便携设备】 => 右键【Redmi 12C】 => 【更新驱动程序】 => 【浏览我的电脑以查找驱动程序】
绑定设备
- 绑定小米账号,【绑定账号和设备】
- 【设置】 => 【我的设备】 => 【全部参数】 => 多次点击【MIUI版本】(7次左右) => 开启开发者模式
- 【设置】 => 【更多设置】 => 【开发者选项】 => 【设备解锁状态】 => 【绑定账号和设备】
- 设备解锁_Redmi 12C_坑[1]: 操作不当会导致锁定
- 如果手机账号已绑定其余设备,然后
- 先在【设备解锁状态】中【绑定账号和设备】
- 再去【小米账号】重绑手机号
- 然后重新去【设备解锁状态】中【绑定账号和设备】
- 设备锁定 7 天左右
- 如果手机账号已绑定其余设备,然后
解锁
- 下载官方工具: https://www.miui.com/unlock/index.html
- 运行
miflash_unlock.exe
,登录小米账号 - 在关机状态下同时按住
电源键
和音量减键
,直到出现FASTBOOT
界面。 - 连接至电脑,点击 【解锁】 => 【重启手机】
2. Magisk
参考:
- 看雪博客:https://bbs.kanxue.com/thread-275982.htm
- Magisk 中文网:https://magiskcn.com/
前置条件:1. 手机必须解 BL 锁; 2. 电脑具备 ADB 环境
2.1 前情提要
-
Magisk 是什么?
- 是由
topjohnwu
打造的开源框架软件,可以在修改系统功能的同时不会对系统本身造成破坏,但是Magisk
更普遍的用途是作为获取和管理Root
权限的工具。
- 是由
-
Magisk 与 Xposed 的异同
- 二者的工作机制都是 拦截
Xposed
通过劫持 Android 系统的zygote
进程来加载自定义功能,这就像是半路截杀,在应用运行之前就已经将我们需要的自定义内容强加在了系统进程当中。Magisk
则另辟蹊径,通过挂载一个与系统文件相隔离的文件系统来加载自定义内容,为系统分区打开了一个通往平行世界的入口,所有改动在那个世界(Magisk
分区)里发生,在必要的时候却又可以被认为是(从系统分区的角度而言)没有发生过。
- 得益于独特的挂载机制,使用
Magisk
时我们可以有针对性地隐藏root
,甚至暂时隐藏Magisk
本身。当被挂载的Magisk
分区被隐藏甚至被取消挂载时,原有系统分区的完整性丝毫未损,玩需要root
验证的游戏、运行对设备认证状态有要求的应用甚至进行需要验证系统完整性的OTA
更新都没有任何问题。 - 因此严格来说
Magisk
可以被看作是一种文件系统,这种文件系统通过巧妙的实现方式避开了对系统文件的直接修改,从稳定性上来看要优于以往任何一种系统框架,这也是当前它在玩机社区广受认可和好评的原因所在。 - 由于挂载系统的存在,也让 Magisk 拥有了多样的模块化生态系统。
Magisk
既可以独立使用,只安装面具模块。也可以和Xposed
框架结合起来使用,发掘更多的功能。理论上两者功能可以相互替代,但由于两者侧重点不同以及模块开发难度等原因,Magisk
更多用于对 系统 的修改,而Xposed
更多用于对 用户软件 的修改。
- 二者的工作机制都是 拦截
2.2 安装流程
-
下载对应手机型号对应版本的官方镜像
-
Redmi 12C:
-
下载卡刷包,然后解压,把
boot.img
文件提取出来,并放到手机中。-
卡刷包和线刷包
-
卡刷 的本质是对文件进行替换。不会重新刷新整个分区,只是替换部分文件。因此,卡刷包里面的内容实际上就是一些文件和目录。
- 这个文件和目录里面的内容是原来机器上有的就替换掉原来的文件,如果没有的,就添加进去就行了,因此卡刷包的特点是扩展名为
zip
的一个压缩包,通常是放置到外置SD卡上,通过RECOVERY
之类的引导程序在机器操作系统启动之前就将文件替换掉(因为手机系统一旦启动,一些系统文件你就无法替换了,这个和WINDOWS
的系统文件替换过程其实类似的)。
- 这个文件和目录里面的内容是原来机器上有的就替换掉原来的文件,如果没有的,就添加进去就行了,因此卡刷包的特点是扩展名为
-
线刷 的本质是对分区的全部内容的替换。原理和sx安装系统采用
GHOTST
克隆分区的道理一样。因此卡刷包里面的文件通常都是一个一个的img文件(分区映像文件)。
-
-
- 其余型号的相关链接:MIUI正式版刷机包汇总:https://web.vip.miui.com/page/info/mio/mio/detail?postId=37093637&app_version=dev.20051
-
-
12C 的卡刷包中没有
boot.img
,只有payload.bin
文件- 相关链接:
-
提取
boot.img
- 下载工具
payload-dumper-go
- 解压后,将
payload.bin
复制到目录中 打开CMD命令行.bat
- 按照提示输入
b
- 在
./img
路径下,有boot.img
文件
- 下载工具
-
低版本的 Magisk 针对联发科的 CPU 需要关闭 AVB2.0 验证,最新版已修复联发科卡米问题
-
-
将
boot.img
和卡刷包
push
到手机 Download 目录下adb push [] /storage/sdcard0/Download
- 卡刷包主要是为了让手机的版本与解压的
boot.img
版本相同
-
手机下载 Magisk app
- 网址:https://magiskcn.com/magisk-download
adb install []
-
Magisk 安装
- 打开 Magisk,
安装
- 如果有
修补 boot 镜像中的 vbmeta
,不勾选,直接下一步
选择并修补一个文件
- 选中上传的
boot.img
文件,开始
- 修补成功,输出到
/stroage/emulated/0/Download/magisk_patched-[版本号]_[随机].img
- 打开 Magisk,
-
电脑下载 adb-fastboot,并解压
-
将
boot.img
和 生成的magisk_patched-xxxx.img
复制到adb-fastboot/
目录下 -
手机重启到
fastboot
模式 -
打开
打开CMD命令行.bat
- 输入
fastboot flash boot [magisk_patched-xxxx.img]
- 输入
-
出现下面这三行代码,就算成功
Sending 'boot' (131072 KB) OKAY [ 3.311s] Writing 'boot' OKAY [ 0.441s] Finished. Total time: 3.794s
-
重启手机,
Magisk
显示版本,就算是成功
-
2.3 Riru 模块安装
Riru
并不是单独一个Magisk
模块,而是由国内独立开发者Rikka
开发的一套模块系列。Riru
神奇的地方在于,它部分地达成Xposed
那样的功能,能够自定义到一部分的应用。Android
上所有正在运行的应用程序都是通过zygote
创造出来的,而Riru
正是通过替换一个会被zygote
进程加载的共享库,来达到劫持应用、让应用进程执行模块代码的目的。
- 为什么是一套?
- 为了避免一群模块都去抢占那个要被替换的共享库,先派遣一个模块(也是 Riru Core 核心)去负责替换,再由那个核心模块提供 API 给其他模块,以让其他那些有需要模块都能正常工作、顺利生效。
- 从这样的原理看,想要使用 Riru 系列模块,Riru Core 是必须安装的,然后需要用户按照自己的需求安装 Riru 系列的其他模块。
- 安装流程
- 下载 riru
push
到手机中,并打开Magisk
adb push [] /storage/sdcard0/Download
模块
,从本地安装
- 选中对应文件,安装完成后,重启
2.4 FoxMagiskModuleManager.apk & Move Certificates 模块安装
-
用途:将用户证书移动到系统证书的根目录下。
-
高版本的 Magisk 已经不支持在线安装模块,使用 FoxMagiskModuleManager 替代
-
安装流程(删)- 查看手机版本,并下载对应的 FoxMagiskModuleManager
- 查看版本:
adb shell getprop ro.product.cpu.abi
- 安装 apk:
adb install -t []
- 查看版本:
- 首次启动设置完成后,
Online
,搜索Move Certificates
,下载/安装~ - 重启手机
- 查看手机版本,并下载对应的 FoxMagiskModuleManager
-
目前(
2023.05.05
),FoxMagiskModuleManager
上下载的Move Certificates
为 ys1231 的v1.3
版本。Redmi 12C 上无效。 -
安装流程
- 从
Magisk-Modules-Repo
上下载 movecert - Releases 中有 v1.9 版本,不过该版本有 Bug。
- 参考资料:https://blog.csdn.net/puppyinasock/article/details/130207403
Magisk
安装该zip
文件时,会出现unzip error
- 该模块作者忘记更新该路径
/META-INF/com/google/android/update-binary
下的脚本文件。 - 需要将该文件替换为 https://github.com/topjohnwu/Magisk/blob/master/scripts/module_installer.sh
- 该模块作者忘记更新该路径
- 解决方案:azio@github 重写了正确的脚本
git clone git@github.com:azio7/movecert.git
- 进入
movecert/
目录 zip -r movecert.zip .
生成正确的movecert.zip
文件
- 将
movecert.zip
文件推送到手机中。 - 在
Magisk
上安装,重启。
- 从
2.5 LSPosed 模块安装
需求:1. 系统:
Android 8.1 - 12
; 2. 已安装v21
以上版本的Magisk Manager
;3.Riru
模块v23+
- 前情提要
Xposed
框架是一款可以在不修改 APK 的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。在这个框架下,我们可以加载很多插件 App(模块),这些插件 App 都有各自各种各样的功能。Xposed
停止更新了(安卓10及其以后的版本不支持),作者将该项目移交给了EdXpose
继续维护
LSPosed
和EdXposed
LSPosed
是Edxposed
的一个分支,相比于EdXposed
,它精简了许多, 也要比后者流畅的多、省电的多。Edxposed
面临着停更的风险,且稳定性欠佳,Lsposed
则可以保证长期更新,并会持续加入新的功能。- 它并不是一个传统的
Xposed
管理器,它作为一个Magisk
模块刷入设备运行,安装风险也比传统Xposed
管理器小很多。 LSPosed
继承了Xposed
的模块仓库,仓库内模块都是开源模块,安全性有了保证。LSPosed
本身也与时俱进,使用了Material You
设计语言,支持 安卓 12 的 Monet(莫奈)取色,更美观- 模块可以针对单独软件开启稳定性更高:传统
Xposed
激活后会对所有应用生效,而LSPosed
激活后只对选中应用生效 - 不要为一个应用启用太多模块,会拖累应用的运行速度,偶尔也会产生意想不到的 bug
- 安装流程
- 根据 Magisk 的版本下载对应的 LSPosed
riru
版本对应riru
版的Magisk
;zygisk
则对应zygisk
版本的
push
到手机中,并打开Magisk
adb push [] /storage/sdcard0/Download
设置
,不开启 Zygisk
模块
,从本地安装
- 选中对应文件,安装完成后,重启
- 重启后,如果界面上没有对应的图标
- 拨号中输入:
*#*#5776733#*#*
LSPosed
模块压缩包解压,直接安装LSPosed 管理器 APP
- 拨号中输入:
- 根据 Magisk 的版本下载对应的 LSPosed
- 使用方法
- 下载安装需要的 apk 文件
- 打开
LSPosed
,模块
,启用模块
,勾选需要起作用的作用域
- 重启(部分模块需要重启)
常用命令(后期迁移至其他地方)
ADB
- 将文件推送至手机
adb push [文件] [路径]
- 安装 APK 文件
adb install -t [apk]
-t
为强制安装
- 查看手机当前界面
adb shell
=>dumpsys window | grep mCurrentFocus
- 查看手机系统版本
adb shell getprop ro.product.cpu.abi
技巧
利用 clash 进行抓包
clash
+Burp Suite
下载地址
- Windows / Linux:https://github.com/Dreamacro/clash
- Android:https://github.com/Kr328/ClashForAndroid
Android 流程
前置条件:
Android
设备需要有Magisk
中的Move Certificates
模块
- 原理
- 通过设置 clash 进行抓包,安卓设备可以通过 adb reverse 将电脑的某个端口映射到 Android 设备上。
- 流程
PC
上启动Burp Suite
Proxy
,Proxy settings
- 在
Proxy listeners
中新增127.0.0.1:8084
Import / export CA certificate
,Export
下的Certificate in DER format
,保存至本地- 推送到手机中
设置
,安全
,更多安全
,加密与凭证
,安装证书
,CA 证书
- 添加完证书后,重启设备即可
- 技巧_利用 clash 进行抓包_坑[1]:
Redmi 12C
上FoxMagiskModuleManager
下载的Move Certificates
证书迁移失败,跳转至详情
- 查看
Android
系统版本,下载对应的apk
文件,foss
版本即可。adb shell getprop ro.product.cpu.abi
- 编写
clash
的配置文件config.yaml
,并推送到sdcard/Donwload
目录-
mixed-port: 7890 allow-lan: false mode: global log-level: info external-controller: 127.0.0.1:9090 proxies: - name: "burp" type: http server: 127.0.0.1 port: 8084 proxy-groups: - name: Proxy type: select proxies: - burp
- 由于最后将利用
adb reverse
将 PC 端口反向映射到Android
,因此proxies
中的server
为127.0.0.1
- 其余情况,可以根据具体需求修改对应的
server
和port
- 由于最后将利用
adb push config.yaml /storage/sdcard0/Download
-
Android
打开clash
配置
,创建配置
,从文件导入
- 修改
名称
,浏览文件
选中config.yaml
保存
后,启用配置文件- 启动代理后,选择
GLOBAL
下的burp
cmd.exe
中开启反向映射,Burp
即可抓包adb reverse tcp:8084 tcp8084