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 \


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

热门文章

最新文章

  • 1
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    30
  • 2
    Android历史版本与APK文件结构
    8
  • 3
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    70
  • 4
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
    1
  • 5
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
    5
  • 6
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    8
  • 7
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    3
  • 8
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    6
  • 9
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    8
  • 10
    escrcpy:【技术党必看】Android开发,Escrcpy 让你无线投屏新体验!图形界面掌控 Android,30-120fps 超流畅!🔥
    5
  • 1
    android FragmentManager 删除所有Fragment 重建
    15
  • 2
    Android实战经验之Kotlin中快速实现MVI架构
    22
  • 3
    即时通讯安全篇(一):正确地理解和使用Android端加密算法
    24
  • 4
    escrcpy:【技术党必看】Android开发,Escrcpy 让你无线投屏新体验!图形界面掌控 Android,30-120fps 超流畅!🔥
    39
  • 5
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    129
  • 6
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    40
  • 7
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    55
  • 8
    Android历史版本与APK文件结构
    149
  • 9
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    46
  • 10
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    40
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等