type
status
date
slug
summary
tags
category
icon
password
首先参考Pixel6Pro安卓内核源码编译这篇文章,确保能编译出内核。此文章作为后续。

注意目前我所编译的5.10.189内核 该驱动大部分功能都不可用!简单的修复见这篇文章.

1.从GitHub下载源码

下载后移动到aosp文件夹内的driver目录中
 

2.适配

首先设置一个比较大的swap分区

第一步:禁用/swapfile

sudo swapoff /swapfile

第二步:修改swap 空间的大小(16G)

sudo dd if=/dev/zero of=/swapfile bs=2G count=8

第三步:设置文件为swap file类型

sudo mkswap /swapfile

第四步:启用swap.img

sudo swapon /swapfile
 
aosp/drivers/Makefile 中最后添加下面的两行,-m代表以内核模块方式编译。原因是查看rwProcMem33目录内的makefile会发现,它默认就是-m作为模块编译的。原因是作者在最新版本里用到了__this_module
__this_module是一个struct module变量,代表当前模块,跟current有几分相似,只有-m作为模块的才能使用。
notion image
添加动态加载支持,默认是开启的,检查即可
notion image
• 在编译rwProcMem33中硬件断点的内核模块时,由于内核编译时会将警告视为错误导致编译内核停止,但我们不希望修改整个makefile忽略所有警告导致的错误,因为上游给我们的代码肯定是干净的。所以我们要修改aosp/drivers/rwProcMem33/hwBreakpointProcModule/hwBreakpointProc/Makefile,增添一个ccflags-y := -w,这参数仅对当前模块有效,来忽视这一个模块的warning。加上一个-w参数
修改 aosp/drivers/rwProcMem33/ver_control.h ,启用页表计算物理地址,并且选择内核5.10.43
前者默认开启,后者根据我们在谷歌官网看到的版本号
notion image
notion image
notion image
修改硬件断点驱动的版本控制文件rwProcMem33/hwBreakpointProcModule/hwBreakpointProc/ver_control.h,添加当前版本号。
notion image

3.编译

直接BUILD_AOSP_KERNEL=1 ./build_slider.sh开始编译,发现产生两个报错。
有报错
  • 文件:aosp/drivers/rwProcMem33/phy_mem.h
  • 第 175 行和第 176 行需要修复。
两个print的第二个参数都是错的,疑似多写了pgd_val
notion image
 
按照原来的命令编译,报错module list
notion image
执行报错内的命令,再来一次
notion image
abi验证报错。

更新symbol_list

无论你是哪一个分支 都要按照下方教程更新一次
按照官网更新abi的指令,执行
具体参考https://source.android.com/docs/core/architecture/kernel/howto-abi-monitor#update-abi
跟安卓版本没关系,而在于是否使用build.sh编译内核,显然我们是用的build_slider.sh,所以在这里就使用以上的命令。
如果是新版本的,用的kleaf编译的,没使用.sh,则使用
速度非常 非常之慢 很久都在这 等候。这里需要一个逆天之大的swap分区不然会kill。实测17G物理内存+2G swap会kill。实测17G+20G能编译过。
notion image
会两次出现LTO vmlinux.o。一直等到第二次编译完成。
notion image
notion image
需要重新commit一下,因为有两个文件被修改了。
commit后,使用一开始的编译命令再执行一
随后可以再运行一次update脚本
notion image
这个编译脚本的名称应该根据你本来使用的sh来。我一开始用的是build_slider,并且我修改的内容都在aosp文件夹内,所以我也运行update_symbol_list_slider_aosp.sh即可。
notion image
运行完这个脚本,应该会提示使用这一条命令进行内核编译
这是比编译abi要快的多的多的方式。
随后输出文件将在out/mixed/dist中,即使有报错也会输出boot.img和驱动KO文件。
notion image
和内核.img输出的同一个目录有俩KO,分别是hwBreakpointProc1.ko和rwProcMem37.ko,这俩我们要push到手机
notion image

4.上手

两个ko文件push到手机,并且刷入magisk修补后的新内核之后,insmod直接加载
notion image
接下来要编译一下测试工具。先编译HWBPClient,运行在电脑上直接编译就可以
notion image
接下来编译Server。Server的编译需要NDK,用Android Studio安装。
在SDK manager→ SDK Tools里面
notion image
装好后设置环境变量
notion image
在Server项目目录下jni文件夹内执行编译命令
notion image
编译后的文件在rwProcMem33\hwBreakpointProcModule\testHwBpServer\libs中,选择对应手机架构的ELF,push到手机中运行即可 注意拷贝到/data/local/tmp下,chmod 777运行,如果在sdcard运行会报错权限不足。
手动输入手机的ip和默认端口3370连接
notion image
notion image
Pixel6Pro EADB环境搭建对rwProcMem33的尝试修补
Loading...
Lynnette177
Lynnette177
建议开着梯子访问站点。图片是直接从Notion获取的,不开梯子容易看不见图片。
Latest posts
tersafe
2025-8-13
iOS典型反调反越狱app分析
2025-7-28
RPC:遍历android的所有java实例
2025-7-17
写一个Android Hook小框架
2025-6-23
一些macos常用软件破解记录
2025-6-22
iOS网易新闻登录算法逆向
2025-6-22
Announcement
🎉2024.6.9 上线🎉