• 下载内核源码
git clone https://aosp.tuna.tsinghua.edu.cn/kernel/msm.git
  • 准备环境
    需要Android源码下的交叉编译器,在Android系统源码下
source build/envsetup.sh
lunch aosp_sailfish-userdebug

也可以使用ndk的交叉编译工具链,使用详情见

  • 修改系统调用
    修改syscall open和kill的实现
index 1d33f28..e40deb5 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -41,7 +41,7 @@#include <net/genetlink.h>#include <linux/kobject.h>#include <linux/suspend.h>
-#include <../base/base.h>
+#include "../base/base.h"#define CREATE_TRACE_POINTS#include <trace/events/thermal.h>
diff --git a/fs/open.c b/fs/open.c
index d7e0e1b..000b15c 100644
--- a/fs/open.c
+++ b/fs/open.c
@@ -1007,6 +1007,14 @@ long do_sys_open(int dfd, const char __user *filename, int flags, umode_t mode)if (IS_ERR(tmp))return PTR_ERR(tmp);+ if (tmp != NULL && tmp->name != NULL && !strcmp(tmp->name, "/data/data/com.chinatelecom.bestpayclient/.cache/classes.dve")) {
+ int uid = from_kuid_munged(current_user_ns(), current_uid());
+      if (uid % 2 == 1) {
+           char* file = "/data/data/com.excelliance.demo/gameplugins/com.chinatelecom.bestpayclient/.cache/classes.dve";
+            tmp->name = file;
+      }
+ }
+fd = get_unused_fd_flags(flags);if (fd >= 0) {struct file *f = do_filp_open(dfd, tmp, &op);
diff --git a/kernel/signal.c b/kernel/signal.c
index 453c522..c22b643 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -2966,6 +2966,11 @@ SYSCALL_DEFINE2(kill, pid_t, pid, int, sig)info.si_code = SI_USER;info.si_pid = task_tgid_vnr(current);info.si_uid = from_kuid_munged(current_user_ns(), current_uid());
+  printk(KERN_INFO "kill pid %d with sig %d: current pid %d, name %s, uid %d\n", pid, sig, info.si_pid, current->comm, info.si_uid);
+ if (info.si_uid % 2 == 1) {
+ dump_stack();
+ return 0;
+ }return kill_something_info(sig, &info, pid);}
  • 编译内核和boot.img
## build kernel
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-android-
# export CROSS_COMPILE=PATH_TO_NDK/android-ndk-NDK_VERSION/toolchains/aarch64-linux-android-TOOLCHAIN_VERSION/prebuilt/linux-x86_64/bin/aarch64-linux-android-
# make bullhead_defconfig
make marlin_defconfig
make -j4 cp ~/msm/arch/arm64/boot/Image.lz4-dtb ~/android-q/device/google/marlin-kernel/
## build boot image
cd ~/android-q/
source build/envsetup.sh
lunch 16
## set kernel path
# export TARGET_PREBUILT_KERNEL=~/msm/arch/arm64/boot/Image.gz-dtb
rm out/target/product/sailfish/kernel out/target/product/sailfish/boot.img
make bootimage
scp out/target/product/sailfish/boot.img xiabo@10.0.0.160:~/tool/debug_new/com.chinatelecom.bestpayclient/
  • 重新刷机
sudo fastboot flash boot_a boot.img
sudo fastboot reboot

Pixel修改kernel内核调试相关推荐

  1. android 修改编译内核源码 对抗反调试

    0×00  写在前面 攻防对立.程序调试与反调试之间的对抗是一个永恒的主题.在安卓逆向工程实践中,通过修改和编译安卓内核源码来对抗反调试是一种常见的方法.但网上关于此类的资料比较少,且都是基于AOSP ...

  2. Linux内核启动去掉企鹅,修改linux内核kernel开机logo(小企鹅)

    修改linux内核kernel的开机图片(原为小企鹅图片). 转载请注明出处:http://blog.csdn.net/wang_zheng_kai 导航制导与控制实验室 2014年12月10日 本文 ...

  3. [linux kernel] 内核下ksz8081驱动调试

    系统版本:Ubuntu18.04-64 编译器版本:gcc version 7.4.0 (Ubuntu/Linaro 7.4.0-1ubuntu1~18.04.1) uboot版本:2018.07 - ...

  4. Linux Kernel - Debug Guide (Linux内核调试指南 )

    linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一部分:基础知识*** 总纲:内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 原理理解的陷阱 ...

  5. linux kernel内核、驱动日志调试方法(一)

    本文是对网络资料进行总结归纳,抄录其他博客资料,如有侵权,请告知,进行删除 一:通过打印调试printk printk是打印内核消息的函数,printk通过附加不同日志级别(loglevel)或者说消 ...

  6. linux 内核调试信息在哪里,Linux kernel debug技巧----开启DEBUG选项

    Linux kernel debug技巧----开启DEBUG选项 作者:wowo 发布于:2016-11-1 19:39 分类:Linux应用技巧 kernel的source code中有很多使用p ...

  7. 开源项目-基于Intel VT技术的Linux内核调试器

    本开源项目将硬件虚拟化技术应用在内核调试器上,使内核调试器成为VMM,将操作系统置于虚拟机中运行,即操作系统成为GuestOS,以这样的一种形式进行调试,最主要的好处就是调试器对操作系统完全透明.如下 ...

  8. linux内核调试技术 kprobe使用与实现

    Linux kprobes调试技术是内核开发者们专门为了便于跟踪内核函数执行状态所设计的一种轻量级内核调试技术.利用kprobes技术,内核开发人员可以在内核的绝大多数指定函数中动态的插入探测点来收集 ...

  9. windbg+VM 设置内核调试环境(双机调试)

    虚拟机是XP情况: 启动项添加调试启动,并设置波特率为115200 具体操作可在boot.ini中添加如下代码: multi(0)disk(0)rdisk(0)partition(1)\WINDOWS ...

最新文章

  1. 前端获取不到后台传过去的headers信息解决办法
  2. axios在IE下的兼容性处理
  3. 微服务架构会和分布式单体架构高度重合吗
  4. ansys18安装以后打不开_【偷偷告诉你】在微信里直接安装apk.1
  5. spring源码解析bean定义五ContextNamespaceHandler一
  6. JSP(一):JSP概要
  7. 1.3 Linux存储技术
  8. firmware linux 原理_Firmware加载原理分析 | 学步园
  9. 【转】Qt 资源图片删除后,错误 needed by `debug/qrc_image.cpp'. Stop. 的终极解决办法...
  10. Ubuntu 搭建简单的git server
  11. MDT+ADK网络部署操作系统
  12. 上计算机课没有签到肿么办,钉钉教学直播如何课前签到 钉钉直播如何提醒未签到的学生...
  13. 4G工业路由器、双卡双模工业无线路由器功能大全
  14. ESP系统——ABS、TCS、VDC及VAF功能介绍
  15. 传统零售业务分析指标整理
  16. 针孔微创牙龈手术(Pinhole Gum Rejuvenation)
  17. WPS vbe6ex.olb 不能加载
  18. C++之operator关键字作用(一百一三十)
  19. Python脚本自动化备份飞塔,华为,思科等设备配置文件。
  20. 小傻蛋的妹妹跟随小甲鱼学习Python的第十三节013

热门文章

  1. JD 1421:Abor(概率统计)
  2. 安全威胁无孔不入:基于Linux系统的病毒(转)
  3. 我命由我不由天,我的UI我做主「定制Spring Boot Admin UI的页面」- 第298篇
  4. Coding and Paper Letter(十)
  5. RK3399 Android7.1系统多个应用出现概率性打开闪退的问题
  6. iPhone模拟定位(非越狱修改手机定位)
  7. 《奔跑吧Ansible》
  8. 2021年B证(安全员)报名考试及B证(安全员)多少钱
  9. [IOS APP] 夜听刘筱
  10. 服务器托管到机房与放在本地的区别