编译kernel开硬断+android8.0刷到nexus6p过程 —- 之前的笔记了, 整理一下备份
0x0 前言
环境是之前刷6.0时候整好的, 所以这篇笔记配置环境过程, 就没踩坑…
0x1 下载对应机型源码
实际测试, 用PixelC的驱动, 也能刷进Nexus6P, 今天编译使用的8.0.0源码, android源码除了大版本外还有很多小版本,例如:android-8.0.0_r1,8.0.0就是大版本号,r1就是小版本号,因此我们需要先确定好需要下载的版本号,具体有哪些版本请看下面的链接:
0x2 下载编译内核源码
进入内核目录, 初始化环境变量和.config, 开启硬断选项1
2
3
4
5
6
7
8
9
10
11
12
13#设置编译器环境
export PATH=/home/tom/Android8.0/android-8.0.0_r1/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/:$PATH
#设置编译目标平台
export ARCH=arm64
#设置编译目标平台
export CROSS_COMPILE=aarch64-linux-android-
#初始化目标平台配置
make angler_defconfig
#修改内核目录下的.config文件(命令行打开, 在文件夹里看不见)加入 CONFIG_HAVE_HW_BREAKPOINT=y # 表示开启硬断
#编译内核
make
编译完成后再./msm/arch/arm64/boot/image.lz4-dtb文件, 放入android源码的./device/品牌/版本-kernel中替换, 再编译安卓源码生成boot.image, 刷入手机后就可以使用gdb或hpyerpwn来使用硬件断点了
0x3 编译系统
- 编译源码
1
2
3source build/envsetup.sh #初始化环境
lunch #看下图根据自己机型选择
make -j4 #多线程开始编译
编译完成后, img镜像文件在 out/target/product/版本 里, 找到boot.img, cache.img, system.img, userdata.img拷贝出来, 准备后续刷机用
编译驱动
0x4 刷入系统
1 | fastboot flash vendor vendor.img #刷入系统驱动 |
刷完之后发现连上wifi上不了网, 解决方案:
1 | adb shell settings put global captive_portal_http_url https://www.google.cn/generate_204 |
over… 可以愉快的使用gdb或hpyerpwn来使用硬件断点了