-
-
[原创]一加7t自定义内核编译, 以及android10, syscalltable hook实现
-
发表于: 2021-9-23 08:12 6315
-
op7t
oneplus 7t 自定义内核
使用github ci
目前已经使用github ci进行自动化构建, 欢迎fork and star
手机环境
a. oneplus 7t
b. 对应Android版本为Hydrogen OS 10.0.7.HD65
c. 对应版本全量包
1 | OnePlus7THydrogen_14.H. 09_OTA_009_all_2001030048_d935aae55ac_1007 . zip / / 一加手机论坛下载 |
Linux编译环境
- 操作系统ubuntu20
1 2 3 4 5 | ➜ / share cat / etc / lsb - release DISTRIB_ID = Ubuntu DISTRIB_RELEASE = 20.04 DISTRIB_CODENAME = focal DISTRIB_DESCRIPTION = "Ubuntu 20.04 LTS" |
- 依赖安装
1 2 3 4 5 | sudo apt - get install git - core gnupg flex bison build - essential zip curl zlib1g - dev gcc - multilib g + + - multilib libc6 - dev - i386 libncurses5 - dev lib32ncurses5 - dev x11proto - core - dev libx11 - dev lib32z1 - dev libgl1 - mesa - dev libxml2 - utils xsltproc unzip fontconfig sudo apt - get install libssl - dev sudo apt - get install dos2unix sudo apt - get install libncurses5 |
- 编译依赖
百度网盘整个工程包括编译链
链接: https://pan.baidu.com/s/1RQaPSjLPNX99XBVCCAcoZA 提取码: bbki 复制这段内容后打开百度网盘手机App,操作更方便哦
1 2 3 4 | cd / share git clone https: / / gitee.com / yhnu / op7t.git cd / share / op7t / buildtool just c |
- 编译源码
为了简单方便及稳定,我们基于第三方内核进行修改, https://github.com/engstk/op7/tree/r70
1 2 3 4 5 6 | cd / share / op7t / blu7t just c source env.config source proxy.config just make just j16 |
- 打包image
1 | just image |
boot.img提取
1 2 3 4 | curl - L - O https: / / github.com / yhnu / op7t / releases / download / v1. 0 / payload_dumper - win64. zip curl - L - O https: / / otafsc.h2os.com / patch / CHN / OnePlus7THydrogen / OnePlus7THydrogen_14.H. 09_009_2001030048 / OnePlus7THydrogen_14.H. 09_OTA_009_all_2001030048_d935aae55ac . zip unzip - q OnePlus7THydrogen_14.H. 09_009_2001030048 / OnePlus7THydrogen_14.H. 09_OTA_009_all_2001030048_d935aae55ac . zip # 然后参考payload_dumper的使用说明即可 |
拯救OnePlus7t
开发的路上难免磕磕碰碰, 手机就启动不了, 做好防身技能
1 2 3 4 5 6 7 | curl - L - O https: / / otafsc.h2os.com / patch / CHN / OnePlus7THydrogen / OnePlus7THydrogen_14.H. 09_009_2001030048 / OnePlus7THydrogen_14.H. 09_OTA_009_all_2001030048_d935aae55ac . zip curl - L - O https: / / github.com / yhnu / op7t / releases / download / v1. 0 / recovery - oneplus7t - 3.4 . 2 - 10.0 - b26.img fastboot set_active a #is a or b fastboot erase recovery fastboot.exe flash recovery recovery - oneplus7t - 3.4 . 2 - 10.0 - b26.img fastboot.exe reboot recovery adb sideload F:\F2021 - 07 \one7t_kernel\OnePlus7THydrogen_14.H. 09_OTA_009_all_2001030048_d935aae55ac . zip |
开发记录
2021年9月7日 14:33:03
a. 修改内核源码绕过反调试检测
参考文章:
2021年9月10日 08:56:45
a. 编写hellomod模块
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | # Code wrire : yhnu # code date : 2021年9月10日 09:46:05 # e-mail : buutuud@gmail.com # # THis Makefile is a demo only for ARM-architecture # MODULE_NAME : = hello ifneq ($(KERNELRELEASE),) obj - m : = hello.o else CROSS_COMPILE : = / share / op7t / buildtool / aarch64 - linux - android - 4.9 - uber - master / bin / aarch64 - linux - android - #CC = CROSS_COMPILE #KERNELDIR ?= /lib/modules/$(shell uname -r)/build PWD : = $(shell pwd) KDIR : = / share / op7t / blu7t / op7 - r70 / out modules: make - C $(KDIR) REAL_CC = $(GITHUB_WORKSPACE) / buildtool / toolchains / llvm - Snapdragon_LLVM_for_Android_8. 0 / prebuilt / linux - x86_64 / bin / clang CROSS_COMPILE = / share / op7t / buildtool / aarch64 - linux - android - 4.9 - uber - master / bin / aarch64 - linux - android - CLANG_TRIPLE = aarch64 - linux - gnu - ARCH = arm64 M = $(PWD) modules CONFIG_MODULE_UNLOAD = y CONFIG_RETPOLINE = y clean: rm - rf * .o * .order * .symvers * .ko * .mod * . * .cmd . * . * .cmd . * . * . * .cmd @rm - fr .tmp_versions Module.symvers modules.order endif |
b. 注意:
因为内核编译使用的是Clang编译, 因此对应module的编译也需要使用Clang编译
1 2 3 4 5 6 7 | triple 的一般格式为<arch><sub> - <vendor> - <sys> - <abi>,其中: arch = x86_64、i386、arm、thumb、mips等。 sub = v5, v6m, v7a, v7m等。 vendor = pc, apple, nvidia, ibm,等。 sys = none, linux, win32, darwin, cuda等。 abi = eabi, gnu, android, macho, elf等。 |
2021年9月10日 16:33:14
a. linux设备驱动开发学习经典教程
2021年9月11日 21:14:44
查看KernelLog
1 | adb logcat - b kernel,default |
2021年9月17日 09:01:09
krhook模块开发
https://github.com/yhnu/op7t/tree/dev/krhook
参考链接:
https://bbs.pediy.com/thread-267004.htm
现在Android 手机大都使用了 MSM 平台 和 kernel, 高通下面的一个patch 引入了 kernel 代码段内存RO 属性. 因此需要做一些修改
2021年9月17日 14:28:50
友人提醒可以直接通过下面的编译器进行编译,不用改代码Makefile
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads
2021年9月17日 16:28:58
/sys/fs/pstore 内核崩溃日志信息存放的位置
linux使用lwp机制, 导致task_struct的pid在线程中是线程id,需要使用tgid,或者使用uid进行识别
http://www.opensourceforu.com/2011/08/light-weight-processes-dissecting-linux-threads/
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
- [求助]如何获取设备ID 7706
- [原创]通过示例学习Arm汇编03_移位除法 4384
- [原创]通过示例学习Arm汇编02 4281
- [原创]通过示例学习Arm汇编01 6247
- [原创] 通过问题来理解linker01-为什么PT_LOAD有2段Maps文件有3段 20980