miuiv13-redmi-note11TPro-root

好多年不关注这些了,搜索发现多了ab分区、卡刷/OTA包payload.bin等变化。现在再看源码、搜资料自己解包payload.bin等是来不及了。所以还是先看看网上的一些教程吧。

payload.bin解包

  • 更新MIUIV13.0.13的OTA包时保存了一份,结构如下:

payload_dumper

  • 根据:https://zhuanlan.zhihu.com/p/424625779、https://blog.csdn.net/weixin_43890033/article/details/119457211,使用https://github.com/vm03/payload_dumper,git clone下来。
  • 把payload.bin放在payload_dumper目录,使用Win10子系统Ubuntu18.04LTS执行:
python3 payload_dumper.py payload.bin
Traceback (most recent call last):File "payload_dumper.py", line 7, in <module>import bsdiff4
ModuleNotFoundError: No module named 'bsdiff4'

缺少库,根据requirements.txt安装

pip3 install bsdiff4>=1.1.5

安装protobuf报错。

python3 payload_dumper.py payload.bin
Traceback (most recent call last):File "payload_dumper.py", line 15, in <module>import update_metadata_pb2 as umFile "/mnt/d/payload_dumper/update_metadata_pb2.py", line 6, in <module>from google.protobuf import descriptor as _descriptor
ModuleNotFoundError: No module named 'google'pip3 install protobuf>=3.19.3
protobuf requires Python '>=3.7' but the running Python is 3.6.9

直接读取requirements.txt安装也是报错:protobuf requires Python ‘>=3.7’ but the running Python is 3.6.9。不想升级python。

pip3 install -r requirements.txt
Collecting protobuf>=3.19.3 (from -r requirements.txt (line 1))Using cached https://files.pythonhosted.org/packages/6c/be/4e32d02bf08b8f76bf6e59f2a531690c1e4264530404501f3489ca975d9a/protobuf-4.21.0-py2.py3-none-any.whl
protobuf requires Python '>=3.7' but the running Python is 3.6.9

因为不了解python,仔细看是大于等于的关系,安装的是protobuf-4.21.0版本,尝试安装protobuf-3.19.3版本成功:(six>=1.16.0通过requirements.txt安装了)

pip3 install protobuf==3.19.3
Collecting protobuf==3.19.3
Installing collected packages: protobuf
Successfully installed protobuf-3.19.3
  • 执行解包报错:
python3 payload_dumper.py payload.bin
Processing apusys partitionSOURCE_COPY supported only for differential OTA

看其python代码没有使用其他文件,但是为了测试还是把OTA包整个解压到这里,再次测试还是报同样错误。在output目录生成空文件apusys.img。

payload_dumper-win64

  • 怀疑是不是工具的问题或者是需要完整包,OTA包不行。
  • 根据https://cloud.tencent.com/developer/article/1937712,下载https://ali.kenvie.com/Downloads/payload_dumper-win64.zip。
  • payload.bin放入payload_dumper-win64\payload_input,cmd下执行payload_dumper.exe。
payload_dumper.exe
Traceback (most recent call last):File "payload_dumper.py", line 89, in <module>
AssertionError: unsupported op
[15820] Failed to execute script payload_dumper
  • 额,我没有逆向分析,但是怀疑就是把上面的payload_dumper打包python成exe。

unota

  • 搜到https://www.hu60.cn/q.php/bbs.topic.99456.html,下载https://aite.xyz/product/unota/页面中的:https://xiaoqidun-1253140229.file.myqcloud.com/product/unota/unota_windows_amd64.exe?sign=248f446dc2ea809cbf7440a11043e955&time=1664520857。
  • 提供了Linux、Windows、mac、Android,差不多全平台的可执行文件。
  • 执行报错:
unota_windows_amd64.exe -i payload_input\payload.bin
2022/09/30 14:57:42 extract apusys to payload_extract\apusys.img ....
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x0 pc=0xbe59dc]goroutine 1 [running]:
main.extractPartition(0xc000025450, {0xc00080f7e0?, 0xc00006fd30?}, {0xd0b500, 0xc00000a168}, 0x6165d)./unota.go:154 +0x15c
main.extractPartitions({0xc0001cae00, 0x1d, 0x6153a?}, {0xd0b500, 0xc00000a168}, 0xc00000e488?)./unota.go:216 +0x352
main.payload({0xd0b500, 0xc00000a168})./unota.go:143 +0x2b1
main.main()./unota.go:91 +0x4a5unota_windows_amd64.exe -i payload_input\payload.bin -s boot
2022/09/30 15:04:04 extract boot to payload_extract\boot.img ....
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x0 pc=0xbe59dc]goroutine 1 [running]:
main.extractPartition(0xc000025860, {0xc0000120f0?, 0xc00006dd30?}, {0xd0b500, 0xc00000a168}, 0x6165d)./unota.go:154 +0x15c
main.extractPartitions({0xc0001c8e00, 0x1d, 0x6153a?}, {0xd0b500, 0xc00000a168}, 0xc00000e4a8?)./unota.go:216 +0x352
main.payload({0xd0b500, 0xc00000a168})./unota.go:143 +0x2b1
main.main()./unota.go:91 +0x4a5
  • 看来是go写的,全平台编译,给出错误定位,不过我还没看payload.bin的数据结构,现在只能猜测是不支持OTA解包或者这个OTA包中不包含boot.img等镜像。之后根据care_map.pb测试其他镜像,虽然还是解出空文件,但是应该很大概率是这个OTA包中不包含boot.img等镜像,甚至不包含一个完整的分区镜像。
  • 因为网速限制,只能下载一个线刷包,里面应该有boot.img。完整的卡刷包等有时间再测试。这部分知识也等有时间看源码或者查资料补上。

线刷包提取boot.img,magisk修补

  • 解压后多了好多我不知道的文件,看来自己真的落后太多了。
  • 确实如猜测的线刷包还是有单独的boot.img的:放到手机中
  • 因为是联发科的cpu,加上这么多年没搞过了,不敢向以前一样随便刷机、修改测试了,毕竟以前的机型没有bl锁,还有短接法等进高通9008模式救砖,现在要是砖了只能去售后了,所以只能多搜一些教程,仔细对比、分析细节,排除错误。
  • 没有magisk的跨平台文件,所以需要手机上安装magisk:下载https://github.com/topjohnwu/Magisk/releases/download/v25.2/Magisk-v25.2.apk。
  • 安装后打开选择安装,选择“选择并修补一个文件”,选择boot.img,进开始执行修补了,额,并没有关闭ab校验之类的选项。修补完成会在Download文件夹生成一个magisk_patched**.img的文件。这个文件放到电脑上。

解bl锁及刷boot.img

  • 绑定账号过了7天了,忘了是否必须开启oem解锁,为了保险是开启的:但是好像小米的官方以及一些推荐帖子并没有提开启oem解锁这个选项。

  • 备份好数据后,执行reboot bootloader,进入fastboot界面。额,我记得上次好像还是经典的兔子界面,这次是只有一行橘红色的fastboot大写的黑色背景界面,是不是OTA更新改了?fastboot devices还是能识别设备的。我也不是很确定之前到底是不是兔子界面,如果不是很可能这个bootloader不是使用的高通的lk,如果是uboot可能还好,如果是个我完全不知道的,那么后面还想做双、多系统共存就麻烦了。

  • 使用当时最新的miflash_unlock-6.5.406.31,登录手机绑定的小米账号。

  • 解锁成功后自动重启了。卡了很久银色大MIUI界面,还以为出问题了,过了4、5分钟终于进入了MIUI13引导界面,说明是删除所有数据后启动在做dex2oat之类的优化。并没有验证小米账号的步骤,选择不联网、不登录账号进入了系统,也可能是因为我之前没有开启查找设备的功能。

  • 进入开发者选项看到oem解锁选项是勾选灰色状态,无法设置了。设备解锁状态是已解锁。糟糕,忘了记录属性了,还说对比下解锁后改变了那些属性值。

  • 我记得最开始应该是使用的a分区,OTA更新后使用的应该是b分区,执行:

xaga:/ $ mount|grep /dev/block/sd
/dev/block/sdc20 on /metadata type ext4 (rw,seclabel,nosuid,nodev,noatime,discard)
/dev/block/sdc3 on /mnt/vendor/protect_f type ext4 (rw,seclabel,nosuid,nodev,noatime,nodelalloc,noauto_da_alloc,commit=1)
/dev/block/sdc4 on /mnt/vendor/protect_s type ext4 (rw,seclabel,nosuid,nodev,noatime,nodelalloc,noauto_da_alloc,commit=1)
/dev/block/sdc13 on /mnt/vendor/nvdata type ext4 (rw,seclabel,nosuid,nodev,noatime,nodelalloc,noauto_da_alloc,commit=1)
/dev/block/sdc7 on /mnt/vendor/nvcfg type ext4 (rw,seclabel,nosuid,nodev,noatime,nodelalloc,noauto_da_alloc,commit=1)
/dev/block/sdc8 on /mnt/vendor/persist type ext4 (rw,seclabel,nosuid,nodev,noatime,nodelalloc,noauto_da_alloc,commit=1)
/dev/block/sdc84 on /mnt/rescue type ext4 (rw,seclabel,noatime)
/dev/block/sdc83 on /cust type ext4 (ro,seclabel,nosuid,nodev,noatime)
/dev/block/sdc55 on /mnt/vendor/mdota type ext4 (ro,seclabel,noatime)
xaga:/ $ ls -la /dev/block/by-name/|grep sdc55
lrwxrwxrwx 1 root root   16 2022-09-30 16:26 mcf_ota_b -> /dev/block/sdc55

应该还是b分区,所以boot.img输入b分区应该是没错的,不过为了更安全,我决定还是不刷入分区,而是使用临时启动模式。因为我不确定修补的boot.img是否没有问题。中间想安装个apk,但是暂时不想登录小米账号开启usb安装,所以把启用miui优化选项关闭,这样就可以adb install安装apk了。

  • 执行fastboot boot magisk_patched-25200_IgsWh.img
Sending 'boot.img' (65536 KB)                      OKAY [  1.413s]
Booting                                            FAILED (remote: 'unknown command')
fastboot: error: Command failed

难道现在不支持这样启动了?

  • 所以最后使用:fastboot flash boot_b boot.img,还是直接刷入分区了。
fastboot flash boot_b boot.img
Sending 'boot_b' (65536 KB)                        OKAY [  1.476s]
Writing 'boot_b'                                   OKAY [  0.177s]
Finished. Total time: 1.715s
  • 启动后打开magisk,已经正常运行了,确实是b分区。至于看到有的刷两个分区,猜测应该是不正确的,除非2个分区的系统一致或者两个版本的boot.img一致,不然刷入两个分区,当当前分区不能启动时启动另一个分区,因为写入的magisk的boot.img和原来的不一致,应该启动不了吧?
  • 至于有人提到的联发科cpu需要关闭ab校验之类并没有遇到,正常启动了,也可能是magisk修复了?暂时先到这里吧

magisk隐藏root

  • 开启Zygisk,打开遵循排除列表选项,再点击配置排除列表,选择需要隐藏root的app,重启。这样应该可以隐藏root了,因为我暂时也没有使用模块需求,所以开启隐藏同时不能使用模块的问题与我无影响,不过记得之前测试(应该不是这个v25.2版本)和支持Zygisk之前的版本都存在开启隐藏对隔离进程不生效的问题,虽然可以自己解决,但是比较麻烦。而之前测试Shamiko模块是解决了这个问题的。
  • 下载Shamiko模块:https://github.com/LSPosed/LSPosed.github.io/releases/download/shamiko-120/Shamiko-v0.5.2-120-release.zip,本地安装。关闭遵守排除列表,Shamiko模块可以根据列表隐藏。
  • 测试没有了/sbin目录,变为/dev/随机目录,su是通过chroot或者单独挂载到/system/bin/su实现的,没有加环境变量。
  • 测试根目录没有/init.rc,所以看不到加入的随机服务,不过属性中还是存在的,说明还是启动了随机名称的服务,但是不确定是不挂载init.rc了还是删除了,还是其他情况。
  • /data/misc/wifi/wpa_supplicant/下面没有任何文件了?待确定是不是Android12变更导致的,存储到哪里了?
  • 测试之前Zygisk的特征没有了,待确定是Shamiko模块隐藏的,还是v25.2版本修复了。
  • 测试即使配置排除列表时先点击app图标展开所有进程后再勾选,但是好像隔离进程不存在,需要运行app后再查看勾选多出来的隔离进程?但是我不确定,因为没有删除再测试,是记忆中好像是这样的,如果是这样,其实存在问题。
  • 支付宝等支付应用支付时会弹窗提示危险,以及状态栏左上角提示红色背景的危险。猜测可能关闭这几个系统设置和手机管家的选项即可:


  • 但是想想这刚好是检测magisk隐藏root的功能的时候,测试排除列表添加手机管家,可能需要启动几次才能获取所有进程,勾选,杀死手机管家。测试支付宝支付界面没有危险提示了,状态栏左上角提示绿色的安全,但是写到这里的时候又测试,现在支付没有危险、安全的提示了?不确定是不是策略这么设计的:前几次提示,后面检测不到root及使用时间较久就不进行安全的提示?
  • 定时开启飞行模式的功能经常失灵,待分析是miui的bug,还是因为手机管家(因为好像这个功能是手机管家提供的)没有后台运行,因为应该是系统应用,即使杀死了也会自启的且也没有自启开关(因为自启动管理也是手机管家提供的功能),所以明天测试看看手机管家是否后台运行以及测试处于前台时是否开启飞行模式。暂时记录到这里。

miuiv13-redmi-note11TPro-root相关推荐

  1. 【教程】Redmi 5 root参考教程

    [root教程]Redmi 5 root参考教程 声明 节省时间,总结在前 官方教程与指导 固件支持 youtube视频帮助 下载线刷包后导入刷机 声明 刷机有危险,博文只是提供参考,读者因刷机造成的 ...

  2. 27_linux笔记-sed

    文章目录 sed的-i选项 sed的-n选项 sed的p命令 shell变量传到sed里 sed的d命令 sed的查找方式 sed的c命令 sed的w命令 sed的s命令 个人博客 https://b ...

  3. 红米Redmi Note10 Pro root 安装magisk秒解锁BL Redmi K40 magisk root

    红米Redmi Note10 Pro root 安装magisk和Redmi K40 magisk root 需要专用的工具, 可以

  4. 红米Redmi K40手机刷入Magisk获取Root教程

    Magisk是一套开源系统自定义模块,内置了Magisk Manager(图形化管理界面).Root.启动脚本.SElinux补丁和启动时认证/dm-verity/强制加密移除功能.Magisk同时提 ...

  5. radmi4a Android,红米4A(Redmi 4A 全网通)一键ROOT教程,看教程ROOT

    伴随着安卓刷机越来越流行,很多安卓用户都喜欢上了这种可以自定个性系统的行为,那么红米4A(Redmi 4A 全网通)怎么获取ROOT权限?红米4A(Redmi 4A 全网通)一ROOT过程如何操作呢? ...

  6. 2021年6月27日 root Redmi Note 8

    仅供学习使用,请勿用于商业或违法用途,否则产生的一切后果由使用者自负. root Redmi Note 8 解锁BootLoader 2021年6月26日晚,账号与设备绑定时间已超过一周,可以解锁Bo ...

  7. Redmi Note 10 root权限 刷机教程,红米note10 root 线刷救砖包

    Redmi Note 10 root权限 刷机教程,红米note10 root 线刷救砖包 视频 演示地址 https://www.bilibili.com/video/BV1Po4y1X7MF

  8. Redmi k20解锁/刷TWRP_Recovery/刷Magisk获取root

    主要记录下全过程踩坑的点,以及解决办法,所有提到的工具,都统一打包存放到了度盘,链接如下,自取: 链接: https://pan.baidu.com/s/1h15Q5aJ32W2pu7_G1KQ8Xg ...

  9. slxrom+v.21+原生android+4.2,Redmi K20 Pro 魔趣OS 安卓10 MagiskV21版 完美ROOT 纯净完美 原生极简 纯净推荐...

    刷机包说明: 刷机之前请实现解锁BootLoader,并刷入TWRP专用版 本ROM也适用于小米红米以及魅族手机账户锁手机 如果你是账户锁手机,刷入魔趣ROM后将不再有锁 基于魔趣OS刷机包制作,纯净 ...

  10. 2017年Q1安卓ROOT类恶意病毒发展趋势研究报告

    摘要 1.移动互联网黑产持续性攻击的核武器,用户设备沦陷的最后防线 Android平台作为目前最流行的流量平台,由于它的开源使得大量的厂商加入其阵营,作为当前最大的流量来源,安卓平台是黑产分子眼中的香 ...

最新文章

  1. 介绍理想工作计算机 英语作文,我的理想工作英语作文(精选5篇)
  2. 解决Flash影片中的图片抖动锯齿
  3. JavaScript 演练(8). 对象成员、类成员(原型、非原型)
  4. 程序的图标无法改变_想体验程序猿日常工作的快乐吗?来玩国产烧脑益智游戏《异常》...
  5. python对于设计师有什么用-好的IT产品设计师要做到哪些事
  6. PHP-Yii执行流程分析(源码)
  7. ViT (Vision Transformer) ---- Transformer Model(2)
  8. 《挑战程序设计竞赛》 读后感
  9. Android小项目:计算器
  10. 大学数学新生入门学习数学方法导引 by Ph.D.王小龙
  11. 李雅普诺夫指数 matlab,Matlab画Lorenz系统的最大李雅普诺夫指数图
  12. 人脸对齐—级联回归模型和深度学习模型
  13. dfuse Labs——展示 dfuse 的力量
  14. android 环信 emmessagelistener,集成环信实现简单聊天功能
  15. C# 一些學習小筆記及技巧
  16. Ubuntu22.04.1无法找到Ubuntu软件中心-Ubuntu Software
  17. 作战效能评估系统模型
  18. 说一个头疼的问题:后端瞎返回数据导致APP崩溃,你会怎么办?
  19. C语言—操作符和表达式
  20. python分析红楼梦出现的虚词词频统计,python对红楼梦的每一章节进行词频统计

热门文章

  1. 杀毒软件之父 John McAfee 自杀
  2. ExpandableListView 的使用
  3. ST的硬盘固件门给数据恢复带来的巨大收益
  4. 用python实现关机程序_python实现重启关机程序
  5. PC机组成——主板、芯片组与BIOS
  6. 福利卡巴斯基一年免费以及一些使用软件
  7. 高通QCA61 4A网卡驱动linux,高通创锐QCA61x4蓝牙4.1驱动程序
  8. windows下的Oracle数据库安装教程
  9. python自动化怎么发微信_在python中使用itchat发送微信消息
  10. 微信机器人之PC微信hook