找回密码
 注册
关于网站域名变更的通知
查看: 387|回复: 1
打印 上一主题 下一主题

RK3562编译Android13 ROOT固件教程

[复制链接]

该用户从未签到

跳转到指定楼层
#
 楼主| 发表于 2025-1-8 00:15 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
3 a. o% q3 a8 M* y. c
关闭selinux8 P' b0 H. o# c! w" A6 _
修改此文件("+"号为修改内容)
# R, G+ F; H! m
! l) t2 I$ _) Q9 U* \device/rockchip/common/BoardConfig.mk
5 z- W8 x3 P# I6 v% ]BOARD_BOOT_HEADER_VERSION ?= 2
+ T) z3 ^' ?; D' a% LBOARD_MKBOOTIMG_ARGS :=
) t6 P4 U: T; L. ~3 Y2 zBOARD_PREBUILT_DTBOIMAGE ?= $(TARGET_DEVICE_DIR)/dtbo.img4 i/ f$ f7 R/ G, q8 g) Q
BOARD_ROCKCHIP_VIRTUAL_AB_ENABLE ?= false
4 e2 X: x4 A# v, E6 I-BOARD_SELINUX_ENFORCING ?= true
' Z! P2 _* ?+ X; v; @  I+BOARD_SELINUX_ENFORCING ?= false
1 y4 t2 C& P' q: p6 u  O3 i6 U: I. ?* I  c8 g
- ]) f# M4 t8 j6 |

/ V; q$ ]3 g$ R1 k( Y注释用户组权限检测
4 F9 o. p3 n7 w3 D修改此文件("+"号为修改内容)
/ t' m8 C  z% N1 x9 b+ W; {9 N! F2 {9 F* b; C# W, P8 y* ]
system/extras/su/su.cpp
% [! I+ j$ w: s) e0 U! X; g/ u& b( m. H1 P; z% M& |
void extract_uidgids(const char* uidgids, uid_t* uid, gid_t*
% {: |+ Z; y$ X4 [+ r/ b, Dgid, gid_t* gids, i# v% i) F) r% A; F$ \: E3 q
}( a' e8 Y& b# s' Z9 J) V, j7 v
int main(int argc, char** argv) {, c( d2 T/ d0 }/ I  X& K/ c
- uid_t current_uid = getuid();
7 k, S. A" o  \/ F6 S! D! w- if (current_uid != AID_ROOT && current_uid != AID_SHELL) error(1, 0, "notallowed");8 e# T) g+ a- }1 R* U
+ //uid_t current_uid = getuid();
4 Z: }+ A4 J$ l% W2 v6 O# `+ //if (current_uid != AID_ROOT && current_uid != AID_SHELL) error(1, 0, "notallowed");
6 F+ t$ \- c# B4 k0 f0 @( O
, h, n" t  u- ~/ _6 u" Y3 N9 {1 x) v; X3 X' u1 F2 g$ {
0 M7 X& A/ ]3 w$ |* d7 u
给su文件默认授予root权限
: G# }3 K& l) ]# X4 N- v修改此文件("+"号为修改内容)! A2 y' X: s; a" a* z+ O2 q+ d/ X
system/core/libcutils/fs_config.cpp
2 U5 ]6 S  b. m6 U5 C, D7 `6 H1 i$ v' u6 R4 x, @. B0 X; [9 X
static const struct fs_path_config android_dirs[] = {
8 x# m1 }4 p( s; k5 E/ l     { 00751, AID_ROOT,         AID_SHELL,        0, "system/bin" },
! }* m, R4 G% S6 ?" w     { 00755, AID_ROOT,         AID_ROOT,         0, "system/etc/ppp" },
2 V# c5 v  ]' b7 X     { 00755, AID_ROOT,         AID_SHELL,        0, "system/vendor" },
) w, n3 u/ o- Q: H-    { 00750, AID_ROOT,         AID_SHELL,        0, "system/xbin" },
6 A) a) G* L0 W/ e+ o. ~+    { 00755, AID_ROOT,         AID_SHELL,        0, "system/xbin" },
7 [! m8 N$ c, k. n( f7 ^     { 00751, AID_ROOT,         AID_SHELL,        0, "system/apex/*/bin" },
9 Q9 l- Z; J6 \% d! t     { 00751, AID_ROOT,         AID_SHELL,        0, "system_ext/bin" },% Q9 E2 A6 q+ r! Y. @( S' n
     { 00751, AID_ROOT,         AID_SHELL,        0, "system_ext/apex/*/bin" },7 }6 F* R/ P3 c: m* V
static const struct fs_path_config android_files[] = {' n4 \  Y, g$ I) P& y) l& C/ N
     // the following two files are INTENTIONALLY set-uid, but they, F5 _( F% n5 m/ k- ^6 Z+ @/ m( ~
     // are NOT included on user builds.
& I- g, g7 M" G9 c6 }% I' B0 H     { 06755, AID_ROOT,      AID_ROOT,      0, "system/xbin/procmem" },% a2 V; e# F1 ]4 D& W# [( g
-    { 04750, AID_ROOT,      AID_SHELL,     0, "system/xbin/su" },
& N$ m1 P* v! {& P( }+    { 06755, AID_ROOT,      AID_SHELL,     0, "system/xbin/su" },' w; U6 b" [# M3 h& u
然后修改此文件("+"号为修改内容)4 a- H4 I7 g% J( p( x' g! ?  G
frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
' d: E$ ]3 c# W1 m) d  s3 Ustatic void DropCapabilitiesBoundingSet(fail_fn_t fail_fn) {$ N% D- V- X, E) h
+/*1 c4 n% P; ]" I4 S
  for (int i = 0; prctl(PR_CAPBSET_READ, i, 0, 0, 0) >= 0; i++) {;
, f1 W7 H' y8 y  R3 k! J    if (prctl(PR_CAPBSET_DROP, i, 0, 0, 0) == -1) {9 E+ W3 P) j9 `, X# x; h
      if (errno == EINVAL) {
, q' K9 }! [5 v. t7 E6 Z+ |        ALOGE("prctl(PR_CAPBSET_DROP) failed with EINVAL. Please verify "$ U) Y" p+ n+ C8 h) {/ b- x0 U
              "your kernel is compiled with file capabilities support");5 E1 F4 N% W7 r( o
      } else {& Z- D0 v2 M; w9 s
        fail_fn(CREATE_ERROR("prctl(PR_CAPBSET_DROP, %d) failed: %s", i, strerror(errno)));7 o2 @! |7 b1 ^& e- A
      }
! x9 N- ?  u7 D+ r, Q    }
! t( E2 `4 B9 x, c9 x+ i4 Z7 _; U  }5 q. D0 H! ~# o$ J1 m
+ */: g- a# m" h' ]( a
}; O# j+ b  M$ H6 \
最后修改此文件("+"号为修改内容)
% Z- D: `7 l% |/ o! X! D# O1 _. Kkernel-5.10/security/commoncap.c3 S" t/ R. A, c' x) Z
int cap_task_setnice(struct task_struct *p, int nice)
7 d. p$ X# L. Y0 j: C& @' hstatic int cap_prctl_drop(unsigned long cap)0 ~3 s1 R* W7 D( P
{! v+ b: f6 u( g, S
    struct cred *new;) D  U1 G% A, b6 D0 A* _5 u
+/*, N  v+ L2 ?& V  C: P0 q
    if (!ns_capable(current_user_ns(), CAP_SETPCAP))
5 q" L* i5 ?# O- X2 j    return -EPERM;  ?! O2 p+ |) t! _- J
    if (!cap_valid(cap))9 N; _) z2 L, Q8 t# h7 f
    return -EINVAL;
" J# V: ~+ }2 ?& @! `6 I7 V-
2 {9 u/ N7 u9 X; \9 |+ @+*/* F, u2 q8 X7 j' V+ f) V, U
new = prepare_creds();
$ G1 b/ r/ o9 _3 Q7 H6 N( @
- V4 ~$ p% f3 a  ^! x5 t
5 h' X1 X. F; N4 X# I+ e, M
! A) b7 ^6 U1 q9 ]- P) @源码编译并验证固件是否ROOT# ?- }( F% ~0 _- g9 W3 e6 `
修改完上面三个步骤的文件后,重新编译内核和安卓源码,执行以下命令:( o, }9 e$ k$ j/ K
# make -j4
5 Q; |' _6 l! m6 M下载RootChecker测试APK软件包(自行下载),可通过ADB命令或者U盘安装,安装后按照提示点击按钮检查root。
; l( s6 P+ D5 N* E$ B1 F% n# v0 N& ^+ F+ d+ [& Q6 Q# C
root成功如图:
4 G6 H2 D2 P3 N1 {6 w( @$ F8 I

# \! j. d  K2 E  c

该用户从未签到

1#
发表于 2025-1-8 15:49 | 只看该作者
程序写的很规范
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-23 17:19 , Processed in 0.156250 second(s), 25 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表