Android修改源码实现root

news/2024/7/27 8:23:48/文章来源:https://blog.csdn.net/xiaowang_lj/article/details/136561138

 userdebug 和 user 版本

1. 关闭 selinux

system/core

diff -- git a / init / selinux . cpp b / init / selinux . cppindex 5 a0255acd .. 787917274 100644--- a / init / selinux . cpp+++ b / init / selinux . cpp@@ - 104 , 6 + 104 , 8 @@ EnforcingStatus StatusFromCmdline () {}bool IsEnforcing () {+ return false ;+if ( ALLOW_PERMISSIVE_SELINUX ) {return StatusFromCmdline () == SELINUX_ENFORCING ;}

3. 修改 su.cpp ,注释用户组权限检测

system/extras/su/su.cppdiff -- git a / su / su . cpp b / su / su . cppindex 1 a1ab6bf .. af3d2a68 100644--- a / su / su . cpp+++ b / su / su . cpp@@ - 80 , 8 + 80 , 8 @@ void extract_uidgids ( const char* uidgids , uid_t * uid , gid_t *gid , gid_t * gids , i}int main ( int argc , char** argv ) {- uid_t current_uid = getuid ();- if ( current_uid != AID_ROOT && current_uid != AID_SHELL ) error ( 1 , 0 , "notallowed" );+ //uid_t current_uid = getuid();+ //if (current_uid != AID_ROOT && current_uid != AID_SHELL) error(1, 0, "notallowed");// Handle -h and --help.++ argv ;

4. 给 su 文件默认授予 root 权限

system/core/libcutils/fs_config.cppdiff -- git a / libcutils / fs_config . cpp b / libcutils / fs_config . cppindex 5805 a4d19 .. 92e93 e76f 100644--- a / libcutils / fs_config . cpp+++ b / libcutils / fs_config . cpp@@ - 86 , 7 + 86 , 7 @@ static const struct fs_path_config android_dirs [] = {{ 00751 , AID_ROOT , AID_SHELL , 0 , "system/bin" },{ 00755 , AID_ROOT , AID_ROOT , 0 , "system/etc/ppp" },{ 00755 , AID_ROOT , AID_SHELL , 0 , "system/vendor" },- { 00750 , AID_ROOT , AID_SHELL , 0 , "system/xbin" }, + { 00755 , AID_ROOT , AID_SHELL , 0 , "system/xbin" },{ 00751 , AID_ROOT , AID_SHELL , 0 , "system/apex/*/bin" },{ 00751 , AID_ROOT , AID_SHELL , 0 , "system_ext/bin" },{ 00751 , AID_ROOT , AID_SHELL , 0 , "system_ext/apex/*/bin" },@@ - 190 , 7 + 190 , 7 @@ static const struct fs_path_config android_files [] = {// the following two files are INTENTIONALLY set-uid, but they// are NOT included on user builds.{ 06755 , AID_ROOT , AID_ROOT , 0 , "system/xbin/procmem" },- { 04750 , AID_ROOT , AID_SHELL , 0 , "system/xbin/su" },+ { 06755 , AID_ROOT , AID_SHELL , 0 , "system/xbin/su" },
frameworks/base/core/jni/com_android_internal_os_Zygote.cppdiff -- git a / core / jni / com_android_internal_os_Zygote . cppb / core / jni / com_android_internal_os_Zygote . cppindex 9 eede83e21e5 .. 694 eec2a40ac 100644--- a / core / jni / com_android_internal_os_Zygote . cpp+++ b / core / jni / com_android_internal_os_Zygote . cpp@@ - 656 , 6 + 656 , 7 @@ static void EnableKeepCapabilities ( fail_fn_t fail_fn ) {}static void DropCapabilitiesBoundingSet ( fail_fn_t fail_fn ) {+ /*for (int i = 0; prctl(PR_CAPBSET_READ, i, 0, 0, 0) >= 0; i++) {;if (prctl(PR_CAPBSET_DROP, i, 0, 0, 0) == -1) {if (errno == EINVAL) {@@ -666,6 +667,7 @@ static void DropCapabilitiesBoundingSet(fail_fn_t fail_fn) {}}}+ */}
kernel/security/commoncap.cdiff -- git a / security / commoncap . c b / security / commoncap . cindex f86557a8e43f6 .. 19124 dd6239a1 100644--- a / security / commoncap . c+++ b / security / commoncap . c@@ - 1147 , 12 + 1147 , 12 @@ int cap_task_setnice ( struct task_struct * p , int nice )static int cap_prctl_drop ( unsigned long cap ){struct cred * new ;-+ /*if (!ns_capable(current_user_ns(), CAP_SETPCAP))return -EPERM;if (!cap_valid(cap))return -EINVAL;-+*/new = prepare_creds ();if ( ! new )return - ENOMEM ;

 5. user 版本需要把 su 编进系统

或者build/make/target/product/base_system.mk build/corediff -- git a / target / product / base_system . mk b / target / product / base_system . mkindex 4569 bceff9 .. 5 c8eaaa87c 100644--- a / target / product / base_system . mk+++ b / target / product / base_system . mk@@ - 273 , 6 + 273 , 7 @@ PRODUCT_PACKAGES += \wificond \wifi . rc \wm \+ su \# VINTF data for system imagePRODUCT_PACKAGES += \@@ - 378 , 7 + 379 , 6 @@ PRODUCT_PACKAGES_DEBUG : = \ss \start_with_lockagent \strace \- su \sanitizer - status \tracepath \tracepath6 \

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_999542.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序员失业,被迫开启 PlanB——成为自由职业/独立开发者的第 0 天

程序员失业,被迫开启 PlanB——成为自由职业/独立开发者的第 0 天 今天在逛V2EX的时候看到的一个帖子,程序员中年被裁,被迫开启独立开发这条路。 原贴如下: lastday, 失业啦 公司年前通知我合同到期不续签,今天是我…

python爬虫(3)

上一次的代码结果如下: 当然会有一点点不一样是正常的表现,因为这个图本身使用随机数rand函数做的,用其他两种随机函数出来的结果也不会完全相同。 继上节这次带来的是数组的重塑和转置 1、一维数组的重塑 在NumPy模块中的reshape()函数可…

redis缓存(穿透, 雪崩, 击穿, 数据不一致, 数据并发竞争 ), 分布式锁(watch乐观锁, setnx, redission)

redis的watch缓存机制 WATCH 机制原理: WATCH 机制:使用 WATCH 监视一个或多个 key , 跟踪 key 的 value 修改情况,如果有key 的 value 值在事务 EXEC 执行之前被修改了,整个事务被取消。EXEC 返回提示信息,表示 事务已…

【开源】JAVA+Vue.js实现高校宿舍调配管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能需求2.1 学生端2.2 宿管2.3 老师端 三、系统展示四、核心代码4.1 查询单条个人习惯4.2 查询我的室友4.3 查询宿舍4.4 查询指定性别全部宿舍4.5 初次分配宿舍 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的…

AlibabaCloud微服务:Linux 部署 Sentinel 流量控制

目录 一、实验 1.环境 2.Linux 部署 Sentinel 3. 微服务接入Sentinel配置 二、 问题 1.Linux本地启动Sentinel控制台 2.JDBC连接失败 一、实验 1.环境 (1)主机 表1 主机 系统软件版本IP备注Linuxopenjdk 1.8.0192.168.204.200 maven3.5.0nac…

go 程序被意外kill后出现僵尸进程解决方案

go 管理自身子进程(防止僵尸进程出现) 写这篇文章是因为最近有同事竟然会知道异步启动子进程,不会关闭,最后导致导致僵尸进程出现,而且由于子进程会随着业务的使用越开越多,主进程一旦被kill掉就会不得不手动一个一个kill。 大概…

pytest 教程

1. 安装pytest 目前我使用的python版本是3.10.8 pip install pytest命令会安装下面的包: exceptiongroup-1.2.0-py3-none-any.whl iniconfig-2.0.0-py3-none-any.whl packaging-23.2-py3-none-any.whl pluggy-1.4.0-py3-none-any.whl pytest-8.0.2-py3-none-any.…

2024阿里云服务器ECS u1实例性能测评,CPU内存、网络和存储

阿里云服务器u1是通用算力型云服务器,CPU采用2.5 GHz主频的Intel(R) Xeon(R) Platinum处理器,通用算力型u1云服务器不适用于游戏和高频交易等需要极致性能的应用场景及对业务性能一致性有强诉求的应用场景(比如业务HA场景主备机需要性能一致)&#xff0c…

JavaWeb - 3 - JavaScript(JS)

JavaScript(JS)官方参考文档:JavaScript 教程 JavaScript(简称:JS)是一门跨平台、面向对象的脚本语言,是用来控制网页行为的,它能使网页可交互(脚本语言就不需要编译,直接通过浏览器…

基于Spring Boot+ Vue的房屋租赁系统

末尾获取源码作者介绍:大家好,我是墨韵,本人4年开发经验,专注定制项目开发 更多项目:CSDN主页YAML墨韵 学如逆水行舟,不进则退。学习如赶路,不能慢一步。 目录 一、项目简介 二、开发技术与环…

算法学习01:排序二分

算法学习01:排序&&二分 文章目录 算法学习01:排序&&二分前言需要记忆的模版:快速排序归并排序:整数二分:浮点数二分 一、排序1.快速排序2.归并排序: 二、二分1.整数2.浮点数 总结 前言 需要…

动态规划(算法竞赛、蓝桥杯)--树形DP积蓄程度

1、B站视频链接&#xff1a;E35 树形DP 积蓄程度_哔哩哔哩_bilibili #include <bits/stdc.h> using namespace std; const int N200010,INF0x3f3f3f3f; int h[N],to[N*2],w[N*2],ne[N*2],tot; //邻接表 int d[N]; //d[i]记录从i点向下流出的最大流量 int f[N]; //f…

Linux Ubuntu 部署SVN

最近需要在ubuntu server上部署一个svn&#xff0c;记录 不需要特定版本 如果不需要特定版本&#xff0c;这样安装就是最简单的 sudo apt update然后开始安装 sudo apt install subversion等到安装完成之后执行查看版本命令&#xff0c;如果正常输出那就没问题了 svnadmin …

给一篇word注音可不可以只要拼音不要汉字 word中如何只保留拼音不要汉字

word中如何只保留拼音不要汉字&#xff0c;如果你想要只保留拼音而去除汉字&#xff0c;可以通过一系列步骤来实现。以下是一个详细的教程&#xff0c;帮助你完成这个任务。 首先&#xff0c;确保你的电脑已经安装了“汇帮注音大师”软件。如果没有&#xff0c;你需要安装一下…

基于单片机的商品RFID射频安全防盗报警系统设计

目 录 摘 要 I Abstract II 引 言 1 1 系统方案设计 3 1.1 总体设计要求 3 1.2 总体设计方案选择 3 1.3 总体控制方案选择 4 1.4 系统总体设计 5 2 项目硬件设计 7 2.1 单片机控制设计 7 2.2 按键电路设计 10 2.3 蜂鸣器报警电路设计 10 2.4 液晶显示电路设计 11 2.5 射频识别…

HTML—基本介绍

HTML是一种超文本标记语言(HyperText Markup Language)&#xff0c;用于创建网页的标记语言超文本&#xff1a;是指页面内可以包含图片、链接、声音、视频等内容标记&#xff1a;HTML富含大量的标签供程序员使用&#xff0c;通过标记符号来规定指定内容的样式 浏览器最终根据不…

FPGA 按键控制串口发送

按键消抖 消抖时间一般为10ms&#xff0c;我使用的板子是ACX720&#xff0c;晶振为50MHZ&#xff0c;20ns为一周期。 状态机 模块设计 设计文件 timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 2023/01/11 12:18:36 // Design Name: // Module Name…

蓝牙系列七:开源蓝牙协议栈BTStack数据处理

继续蓝牙系列的研究。 在上篇博客,通过阅读BTStack的源码,大体了解了其框架,对于任何一个BTStack的应用程序都有一个main函数,这个main函数是统一的。这个main函数做了某些初始化之后,最终会调用到应用程序提供的btstack_main,在btstack_main里面首先做一些初始化,然后…

【Node.js从基础到高级运用】二、搭建开发环境

Node.js入门&#xff1a;搭建开发环境 在上一篇文章中&#xff0c;我们介绍了Node.js的基础概念。现在&#xff0c;我们将进入一个更实际的阶段——搭建Node.js的开发环境。这是每个Node.js开发者旅程中的第一步。接下来&#xff0c;我们将详细讨论如何安装Node.js和npm&#…

#onenet网络请求http(GET,POST)

参考博文&#xff1a; POST: https://blog.csdn.net/qq_43350239/article/details/104361153 POST请求&#xff08;用串口助手测试&#xff09;&#xff1a; POST /devices/1105985351/datapoints HTTP/1.1 api-key:AdbrV5kCRsKsRCfjboYOCVcF9FY Host:api.heclouds.com Con…