准备

  • 一台Android手机
  • 一台运行Windows并且带有adb环境的电脑
  • APatch安装包

提取boot分区

通过刷机包来提取boot分区

如果你是小米/红米手机的话,你可以到XiaomiROM下载你手机对应的刷机包来提取Boot分区,其他系统请自行查找,注意刷机包分为线刷和卡刷包。

线刷包的提取方法

  1. 解压线刷包到任意路径下
  2. 进入线刷包文件夹找到images文件夹
  3. 找到里面的boot.img传输到手机上

卡刷包的提取方法

  1. 解压卡刷包到任意路径下
  2. 使用工具提取payload.bin的分区

你可以使用这些工具来提取payload.bin

本教程使用payload-dumper-go来提取,将payload-dumper-go.exe放入到有payload.bin的文件夹中,在上方输入cmd并回车,这时cmd的启动路径就在你当前的路径下了

在终端窗口中输入

1
2
3
4
5
# 如果你使用的是PowerShell请使用这条命令
./payload-dumper-go .\payload.bin

# 如果你使用的是cmd请使用这条命令
payload-dumper-go.exe payload.bin

看到boot分区已经提取出来了,手动使用ctrl+c打断程序,因为我们只需要boot分区

你会发现在当前目录下新建了一个文件夹叫extracted_xxxxxx_xxxxxx(x是任意内容)

进入该文件夹你就可以看到你提取的所有分区了,这里面应该有boot分区,提取出来传输到手机上

不使用ROM提取boot的方法

如果你已经不是官方的boot,你希望实现KernelSU/Magisk和Apatch共存,那么你应该使用这种方法

  1. 使用第三方Recovery提取boot

  2. 使用第三方应用/脚本提取boot分区

  3. 使用电脑提取boot分区

确定是否为AB分区设备

使用adb shell getprop ro.build.ab_update如果返回为true则代表为AB分区,如果返回为空白则不是AB分区

如果确认为AB分区的设备,使用adb shell getprop ro.boot.slot_suffix来查看系统目前所在的分区

使用dd命令提取boot分区

再次提醒:dd命令存在较大的风险,请谨慎使用

  1. 使用adb shell进入adb shell模式
  2. 使用su提权到ROOT权限
  3. 使用cd /dev/block/bootdevice/by-name到分区路径下
  4. 使用ls -l 分区名查看地址,如果是非AB分区设备使用ls -l boot就可以了,如果是AB分区的设备需要使用ls -l boot_目前所在的分区
  5. 看boot箭头指向的路径,比如我这里的路径是/dev/block/sde37 ,那么我就使用
1
2
# dd if=输入文件名 of=输出文件名
dd if=/dev/block/sde37 of=/sdcard/Download/boot.img

  1. 此时在你的/sdcard/Download/目录下应该有一个名为boot.img的文件,它就是我们需要的boot

修补和刷入Apatch

修补boot

  1. 下载并安装Apatch
  2. 进入Apatch,点击点此安装
  3. 点击选择一个启动镜像并修补
  4. 选择你的boot镜像
  5. 点击开始修补
  6. 在修补完成之后并不会退出该页面,看到下方显示Successful Patched!为成功
  7. /sdcard/Download/目录下带有apatch开头的镜像文件传输到电脑上,为刷入做准备

刷入boot

  1. 确认Apatch修补过的镜像文件已经移动到电脑上
  2. 重启手机到fastboot模式下
  3. 使用fastboot flash boot 镜像文件路径,把boot刷入到手机上
  4. 使用fastboot reboot重启手机

  1. 重启手机之后开启Apatch应该就正常工作了

嵌入KPM

  1. 进入Apatch点击下方的扳手图标
  2. 点击右下角的箱子图标,点击嵌入
  3. 点击嵌入模块,选择你想嵌入的模块
  4. 最后点击开始修补,等待修补完成之后点击重启即可

补充

KernelSU和Apatch共存

KernelSU和Apatch共存的目的是,让KernelSU管理系统模块,Apatch管理KPM模块

  1. 下载和修改Apatch安装包

在Apatch官方Github仓库下载安装包(Apatch-releases),使用MT管理器以查看的方式打开Apatch安装包

  1. 替换kping

在安装包的目录存在一个assets的文件夹,在里面你可以看到一个名为kpimg的文件,这就是我们要替换的文件,在此处下载最新kpimg-linux,将kpimg-linux名称修改为kpimg直接替换掉assets里面kpimg,在替换的时候你可以选择对话框左下角的自动签名也可以之后再签名,然后安装我们修改过的Apatch安装包。

  1. 修补boot和嵌入KPM

使用提取boot分区的方法提取出带有KernelSU的boot镜像去修补,修补的方法可以参考上方的修补boot,你可以选择在此处直接嵌入KPM模块

刷入和嵌入可以参考前面的内容,步骤是一样的。

参考

[1] https://apatch.dev/

[2] https://apatch.app/

[3] https://magiskcn.com/payload-dumper-go-boot

[4] https://miuiver.com/checks-for-ab-partitions-support/

[5] https://bbs.kanxue.com/thread-277700.htm

[6] https://developer.android.com/tools/adb

[7] https://developer.android.com/tools/releases/platform-tools

[8] https://www.runoob.com/linux/linux-comm-dd.html

[9] https://xdaforums.com/t/guide-how-to-extract-img-boot-img-etc-from-payload-bin-using-payload-dumper-go.4468781/

[10] https://coolapk.com/feed/55351383?shareKey=M2E0MmQyYWZmZDVlNjY4ZDM5MTI~&shareUid=22627121&shareFrom=com.coolapk.market_13.3.3