前言
為了讓應用程序可以直接調用su執行系統命令和獲取root權限,本文基于Purple Pi OH主板的Android SDK,介紹如果修改和編譯一個root版本的Android11系統,以下為sdk源碼修改方法。
Purple Pi OH作為一款兼容樹莓派的開源主板,采用瑞芯微RK3566 (Cortex-A55) 四核64位超強CPU,主頻最高達1.8 GHz,算力高達1Tops,支持INT8/INT16,支持TensorFlow/MXNet/PyTorch/Caffe框架,多路視頻輸出和輸入,支持4K、H.265/H.264視頻解碼,接口豐富。
玩法豐富,支持OpenHarmony、Ubuntu、Debian、Android等多種系統,提供豐富開源資料。
關閉selinux
device/rockchip/common/BoardConfig.mk
diff --git a/device/rockchip/common/BoardConfig.mkb/device/rockchip/common/BoardConfig.mk
indexe03c54f6a0..4fc6dc9868 100755
--- a/device/rockchip/common/BoardConfig.mk
+++ b/device/rockchip/common/BoardConfig.mk
@@ -59,7+59,7@@ BOARD_BOOT_HEADER_VERSION ?= 2
BOARD_MKBOOTIMG_ARGS :=
BOARD_PREBUILT_DTBOIMAGE ?= $(TARGET_DEVICE_DIR)/dtbo.img
BOARD_ROCKCHIP_VIRTUAL_AB_ENABLE ?= false
-BOARD_SELINUX_ENFORCING ?= true
+BOARD_SELINUX_ENFORCING ?= false
# Use the non-open-sourceparts, ifthey're present
注釋用戶組權限檢測system/extras/su/su.cpp
diff --git a/system/extras/su/su.cpp b/system/extras/su/su.cpp
index 1a1ab6bf40..af3d2a68c7 100644
--- a/system/extras/su/su.cpp
+++ b/system/extras/su/su.cpp
@@ -80,8+80,8@@ voidextract_uidgids(constchar* uidgids, uid_t* uid, gid_t* gid, gid_t* gids, i
}
intmain(intargc, char** argv){
- uid_tcurrent_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;
給su文件默認授予root權限
system/core/libcutils/fs_config.cpp
diff --git a/system/core/libcutils/fs_config.cpp b/system/core/libcutils/fs_config.cpp
index 5805a4d19b..92e93e76ff 100644
--- a/system/core/libcutils/fs_config.cpp
+++ b/system/core/libcutils/fs_config.cpp
@@ -188,7+188,7@@ staticconststructfs_path_configandroid_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"},
// the following files have enhanced capabilities and ARE included
// in user builds.
frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
diff --git a/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp b/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
index 9eede83e21..d161e6fad3 100644
--- a/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
+++ b/frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
@@ -656,7+656,7@@ staticvoidEnableKeepCapabilities(fail_fn_t fail_fn) {
}
staticvoidDropCapabilitiesBoundingSet(fail_fn_t fail_fn) {
- for(inti = 0; prctl(PR_CAPBSET_READ, i, 0, 0, 0) >= 0; i++) {;
+/* 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) {
ALOGE("prctl(PR_CAPBSET_DROP) failed with EINVAL. Please verify "
@@ -665,7 +665,7 @@ static void DropCapabilitiesBoundingSet(fail_fn_t fail_fn) {
fail_fn(CREATE_ERROR("prctl(PR_CAPBSET_DROP, %d) failed: %s", i, strerror(errno)));
}
}
- }
+ }*/
}
kernel/security/commoncap.c
diff --git a/kernel/security/commoncap.c b/kernel/security/commoncap.c
index 876cfe01d9..ce87b1b780 100644
--- a/kernel/security/commoncap.c
+++ b/kernel/security/commoncap.c
@@ -1166,12+1166,12@@ intcap_task_setnice(struct task_struct *p, intnice)
staticintcap_prctl_drop(unsignedlongcap)
{
structcred*new;
-
+/*
if (!ns_capable(current_user_ns(), CAP_SETPCAP))
return -EPERM;
if (!cap_valid(cap))
return -EINVAL;
-
+*/
new= prepare_creds();
if(!new)
return-ENOMEM;
編譯鏡像
修改后需要重新編譯內核和AOSP,Android編譯需要選擇rk3566_r-userdebug版本
sourcebuild/envsetup.sh
lunch rk3566_r-userdebug
檢測驗證root是否成功
可在應用程序中調用 /system/xbin/su來測試系統是否root成功
publicstaticvoidRootCommand() {
Process process = null;
try{
process = Runtime.getRuntime().exec("/system/xbin/su");
process.waitFor();
} catch(IOException | InterruptedException e) {
e.printStackTrace();
} finally{
if(process != null) {
process.destroy();
}
}
}
root的系統可正常執行,而非root的系統會提示沒有權限
java.io.IOException: Cannot run program "/system/xbin/su": error=13, Permission denied
-
Android
+關注
關注
12文章
3945瀏覽量
127944 -
主板
+關注
關注
53文章
1929瀏覽量
71397 -
root
+關注
關注
1文章
86瀏覽量
21417
發布評論請先 登錄
相關推薦
Android11修改攝像頭前后置方法,觸覺智能RK3568開發板演示
![<b class='flag-5'>Android11</b>修改攝像頭前后置<b class='flag-5'>方法</b>,觸覺智能RK3568開發板演示](https://file1.elecfans.com/web3/M00/00/4E/wKgZO2dIGryATAP6AAB_IgRfxw8866.png)
Android11修改攝像頭前后置方法,觸覺智能RK3568開發板演示
![<b class='flag-5'>Android11</b>修改攝像頭前后置<b class='flag-5'>方法</b>,觸覺智能RK3568開發板演示](https://file1.elecfans.com/web3/M00/00/4E/wKgZO2dIGryATAP6AAB_IgRfxw8866.png)
OpenHarmony屬性信息怎么修改?觸覺智能RK3566鴻蒙開發板來演示
![OpenHarmony屬性信息怎么修改?觸覺智能RK3566鴻蒙開發板來演示](https://file1.elecfans.com/web3/M00/00/12/wKgZPGdGdlaAQcG2AAB7LqkFe94757.png)
如何在開源鴻蒙OpenHarmony開啟SELinux模式?RK3566鴻蒙開發板演示
![如何在開源鴻蒙OpenHarmony開啟SELinux模式?RK3566鴻蒙開發板演示](https://file1.elecfans.com/web2/M00/0C/C1/wKgaomc7Hr6AL1UtAAB6Pp_Ckc0170.png)
OpenHamrony4.0去除鎖屏是一種什么體驗?觸覺智能給你支支招
![OpenHamrony4.0去除鎖屏是一種什么體驗?觸覺智能給你支支招](https://file1.elecfans.com/web2/M00/0C/5E/wKgaomc0EPGAPz9zAACK8oQxgoE418.png)
瑞芯微RK3566/RK3568 Android11下該如何默認屏蔽導航欄/狀態欄?看這篇文章就懂了
![瑞芯微RK3566/RK3568 <b class='flag-5'>Android11</b>下該如何默認屏蔽導航欄/狀態欄?看這篇文章就懂了](https://file1.elecfans.com/web1/M00/F3/FA/wKgaoWciCbGARkR9AACCbHIZEYU748.png)
觸覺智能Purple Pi OH鴻蒙開發板成功適配OpenHarmony5.0 Release,開啟新征程
![觸覺智能<b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b>鴻蒙開發板成功適配OpenHarmony5.0 Release,開啟新征程](https://file1.elecfans.com/web2/M00/0B/17/wKgaomcbB5CAT81-AABxUeJzZxU480.png)
瑞芯微RK3566/RK3568 Android11使用OTA升級固件方法,深圳觸覺智能鴻蒙開發板演示,備戰第九屆華為ICT大賽
![瑞芯微RK3566/RK3568 <b class='flag-5'>Android11</b>使用OTA升級固件<b class='flag-5'>方法</b>,深圳觸覺智能鴻蒙開發板演示,備戰第九屆華為ICT大賽](https://file1.elecfans.com/web1/M00/F2/C0/wKgaoWcJ872AA8BOAAB8ojv6gwo511.png)
瑞芯微RK3566鴻蒙開發板Android11修改第三方輸入法為默認輸入法
![瑞芯微RK3566鴻蒙開發板<b class='flag-5'>Android11</b>修改第三方輸入法為默認輸入法](https://file1.elecfans.com/web2/M00/07/9D/wKgZombyGNqAJ2h0AAB5aXv3W1c207.png)
瑞芯微RK3566鴻蒙開發板Ubuntu虛擬機環境搭建教程,觸覺智能Purple Pi OH主板
![瑞芯微RK3566鴻蒙開發板Ubuntu虛擬機環境搭建教程,觸覺智能<b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b>主板](https://file1.elecfans.com/web2/M00/05/6A/wKgZombZfiCAWnW6AABorfNEoUw921.png)
瑞芯微RK3566鴻蒙開發板Ubuntu虛擬機環境搭建教程,觸覺智能Purple Pi OH主板
![瑞芯微RK3566鴻蒙開發板Ubuntu虛擬機環境搭建教程,觸覺智能<b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b>主板](https://file1.elecfans.com/web2/M00/05/6A/wKgZombZfiCAWnW6AABorfNEoUw921.png)
Purple Pi OH在Android11下測試WiFi和LAN的TCP和UDP傳輸速率
![<b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b>在<b class='flag-5'>Android11</b>下測試WiFi和LAN的TCP和UDP傳輸速率](https://file1.elecfans.com/web2/M00/8F/50/wKgZomTMciWAD54NAABOGP2pQZY452.png)
Purple Pi OH 更改SDK的編譯選項
![<b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b> 更改SDK的編譯選項](https://file1.elecfans.com/web2/M00/8F/50/wKgZomTMciWAD54NAABOGP2pQZY452.png)
Purple Pi OH又開外掛!帶你搭建編譯環境及編譯Android 11固件
![<b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b>又開外掛!帶你搭建編譯環境及編譯<b class='flag-5'>Android</b> <b class='flag-5'>11</b>固件](https://file1.elecfans.com/web2/M00/8F/50/wKgZomTMciWAD54NAABOGP2pQZY452.png)
適合大學生的鴻蒙開發板-Purple Pi OH之安裝Docker
![適合大學生的鴻蒙開發板-<b class='flag-5'>Purple</b> <b class='flag-5'>Pi</b> <b class='flag-5'>OH</b>之安裝Docker](https://file1.elecfans.com/web2/M00/8F/50/wKgZomTMciWAD54NAABOGP2pQZY452.png)
評論