Android修改源码实现root

简介: Android修改源码实现root

userdebug 和 user 版本

1. 关闭 selinux

system/core

diff -- git a / init / selinux . cpp b / init / selinux . cpp
 
index 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.cpp
 
diff -- git a / su / su . cpp b / su / su . cpp
 
index 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 , "not
allowed" );
 
+ //uid_t current_uid = getuid();
 
+ //if (current_uid != AID_ROOT && current_uid != AID_SHELL) error(1, 0, "not
allowed");
 
// Handle -h and --help.
 
++ argv ;


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


system/core/libcutils/fs_config.cpp
 
diff -- git a / libcutils / fs_config . cpp b / libcutils / fs_config . cpp
 
index 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.cpp
 
diff -- git a / core / jni / com_android_internal_os_Zygote . cpp
 
b / core / jni / com_android_internal_os_Zygote . cpp
 
index 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.c
 
diff -- git a / security / commoncap . c b / security / commoncap . c
 
index 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/core
 
diff -- git a / target / product / base_system . mk b / target / product / base_system . mk
 
index 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 image
 
PRODUCT_PACKAGES += \
 
@@ - 378 , 7 + 379 , 6 @@ PRODUCT_PACKAGES_DEBUG : = \
 
ss \
 
start_with_lockagent \
 
strace \
 
- su \
 
sanitizer - status \
 
tracepath \
 
tracepath6 \


目录
相关文章
|
3月前
|
Ubuntu 开发工具 Android开发
Repo下载AOSP源码:基于ubuntu22.04 环境配置,android-12.0.0_r32
本文介绍了在基于Ubuntu 22.04的环境下配置Python 3.9、安装repo工具、下载和同步AOSP源码包以及处理repo同步错误的详细步骤。
223 0
Repo下载AOSP源码:基于ubuntu22.04 环境配置,android-12.0.0_r32
|
3月前
|
开发工具 git 索引
repo sync 更新源码 android-12.0.0_r34, fatal: 不能重置索引文件至版本 ‘v2.27^0‘。
本文描述了在更新AOSP 12源码时遇到的repo同步错误,并提供了通过手动git pull更新repo工具来解决这一问题的方法。
124 1
|
3月前
|
Android开发 Docker 容器
docker中编译android aosp源码,出现Build sandboxing disabled due to nsjail error
在使用Docker编译Android AOSP源码时,如果遇到"Build sandboxing disabled due to nsjail error"的错误,可以通过在docker run命令中添加`--privileged`参数来解决权限不足的问题。
616 1
|
3月前
|
开发工具 uml git
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
本文分享了下载AOSP源码的方法,包括如何使用repo工具和处理常见的repo sync错误,以及配置Python环境以确保顺利同步特定版本的AOSP代码。
433 0
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
|
3月前
|
Java Android开发 芯片
使用Android Studio导入Android源码:基于全志H713 AOSP,方便解决编译、编码问题
本文介绍了如何将基于全志H713芯片的AOSP Android源码导入Android Studio以解决编译和编码问题,通过操作步骤的详细说明,展示了在Android Studio中利用代码提示和补全功能快速定位并修复编译错误的方法。
132 0
使用Android Studio导入Android源码:基于全志H713 AOSP,方便解决编译、编码问题
|
3月前
|
Android开发
我的Android 进阶修炼(1): AOSP源码根目录结构
本文介绍了AOSP源码的根目录结构,提供了基于MTK9269 Android 9.0源码的目录说明,帮助读者了解AOSP源码的组织方式和各目录的功能。
175 0
我的Android 进阶修炼(1): AOSP源码根目录结构
|
3月前
|
API 开发工具 Android开发
Android源码下载
Android源码下载
456 0
|
3月前
|
开发工具 Android开发 git
全志H713 Android 11 :给AOSP源码,新增一个Product
本文介绍了在全志H713 Android 11平台上新增名为myboard的产品的步骤,包括创建新的device目录、编辑配置文件、新增内核配置、记录差异列表以及编译kernel和Android系统的详细过程。
108 0
|
3月前
|
Ubuntu 开发工具 Android开发
Repo下载、编译AOSP源码:基于Ubuntu 21.04,android-12.1.0_r27
文章记录了作者在Ubuntu 21.04服务器上配置环境、下载并编译基于Android 12.1.0_r27版本的AOSP源码的过程,包括解决编译过程中遇到的问题和错误处理方法。
188 0
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的高校后勤网上报修系统安卓app附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的高校后勤网上报修系统安卓app附带文章源码部署视频讲解等
56 0