prctl函数linux 需要root权限限吗

2245人阅读
android(1058)
首先您要确认您是想开启adbd 的root 权限,还是让app 也可以拿到root 权限。
(1). adbd 的root 权限
我们通常在debug user 版本问题时, 或者进行user 版本的monkey test 时都会这个工作,以便debug.
如果你想user 版本adb root 权限默认关闭, 而在想开启时, 可以通过工程模式中的设置项开启, 那么请USER2ROOT 功能。
此功能默认关闭, 如果开启, 需要在ProjectConfig.mk 中设置: MTK_USER_ROOT_SWITCH = yes
(2). app 的root 权限
app 的root 权限通常是通过执行su 命令来获取。注意的是KK 上, 因为多种限制, 普通的su 难以直接拿到root 权限, 需要做针对性的改动.
通常我们会内置具有控制端的第三方su, 下面以内置SuperSU, 以及使用Google default su 为例进行说明。
(3). 如何内置第三方SuperSU
该方式可以绕过zygote 和 adbd 对Root Capabilities BoundSet 的限制.
3.1. 下载SuperSU
&SuperSU: http://forum./showthread.php?t=1538053
3.2. 内置Superuser.apk 到 system/app
& &将su 复制并改名成: daemonsu
& &内置su 到 system/xbin
& &内置daemonsu 到 system/xbin
& &内置chattr 到 system/xbin
& &内置chattr.pie 到 /system/xbin
3.3. 内置install-recovery.sh 到system/etc
更新alps/system/core/inlcude/private/android_filesystem_config.h
在android_files 数组的最开始新增.
{ 00755, AID_ROOT, & & &AID_ROOT, & & &0, &system/etc/install-recovery.sh& },
(4). 如何内置Google default su
4.1 放开Google default su 只准shell/root 用户使用的限制.
& & system/extras/su/su.c 中删除下面3行代码
& & if (myuid != AID_ROOT && myuid != AID_SHELL) {
& & & & fprintf(stderr,&su: uid %d not allowed to su\n&, myuid);
& & & & return 1;
4.2 首先将此编译出的su 内置到system/bin, 然后修改su 的内置权限,启用sbit 位.
更新alps/system/core/inlcude/private/android_filesystem_config.h
在android_files 数组中
{ 06755, AID_ROOT, & & &AID_ROOT, & & &0, &system/bin/su& },
注意这行要放在
{ 00755, AID_ROOT, & & &AID_SHELL, & & 0, &system/bin/*& },
4.3 如果是KK 以及以后版本, 需要强行解除zygote 和 adbd 对Root Capabilities BoundSet 的限制
更新kernel/security/commoncap.c 中 cap_prctl_drop 函数为:
static long cap_prctl_drop(struct cred *new, unsigned long cap)
& //begin: Let 'zygote' and 'adbd' drop Root Capabilities BoundSet ineffectively
& & & & if (!strncmp(current-&comm, &zygote&, 16)) {
& & & & & & & & return -EINVAL;
& & & & if (!strncmp(current-&comm, &adbd&, 16)) {
& & & & & & & & return -EINVAL;
& & & & // add end
& & & & if (!capable(CAP_SETPCAP))
& & & & & & & & return -EPERM;
& & & & if (!cap_valid(cap))
& & & & & & & & return -EINVAL;
& & & & cap_lower(new-&cap_bset, cap);
& & & & return 0;
重新编译系统, 重新download 后, adb shell 进入后再输入su 看看是否命令行由$切换到#, 如果切换即成功。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1800169次
积分:33179
积分:33179
排名:第142名
原创:1330篇
转载:590篇
译文:83篇
评论:269条
文章:117篇
阅读:35243
(4)(22)(16)(6)(8)(12)(25)(139)(24)(10)(7)(3)(5)(2)(3)(6)(5)(5)(2)(4)(3)(6)(4)(6)(6)(4)(6)(6)(17)(12)(57)(74)(17)(10)(3)(1)(1)(2)(6)(43)(74)(63)(21)(1)(125)(627)(60)(6)(1)(2)(1)(4)(2)(11)(3)(8)(1)(14)(2)(5)(18)(4)(5)(7)(6)(6)(7)(15)(108)(74)(28)(15)(11)(19)(24)(2)(2)(29)25490人阅读
Linux编程技巧(11)
int prctl&( int option,unsigned long arg2,unsigned long arg3,unsigned long arg4,unsigned long arg5 )
这个系统调用指令是为进程制定而设计的,明确的选择取决于option:
PR_GET_PDEATHSIG :返回处理器信号;
PR_SET_PDEATHSIG :arg2作为处理器信号pdeath被输入,正如其名,如果父进程不能再用,进程接受这个信号。
PR_GET_DUMPABLE :返回处理器标志
PR_SET_DUMPABLE :arg2作为处理器标志dumpable被输入。
PR_GET_NAME :返回调用进程的进程名字给参数arg2; (Since Linux2.6.9)
PR_SET_NAME :把参数arg2作为调用进程的经常名字。(SinceLinux 2.6.11)
PR_GET_TIMING :
PR_SET_TIMING :判定和修改进程计时模式,用于启用传统进程计时模式的
PR_TIMING_STATISTICAL,或用于启用基于时间戳的进程计时模式的
PR_TIMING_TIMESTAMP。
CAP_CHOWN功能:
在一个_POSIX_CHOWN_RESTRICTED功能定义的系统。这会越过改变系统文件所有者和组所有的权限
CAP_DAC_OVERRIED功能:
如果_POSIX_ACL定义,就会越过所有的DAC访问,包括ACL执行访问,用CAP_LINUX_IMMUTABLE功能来排除
CAP_DAC_READ_SEARCH功能:
如果_POSIX_ACL定义,就会越过所有的DAC的读限制,
&并在所有的文件和目录里搜索,包括ACL限制。用CAP_LINUX_IMMUTABLE来限制DAC访问
CAP_FOWNER功能:
&越过文件说有的允许限制,如文件的所有者ID必须和用户ID一样,除了CAP_FSETID可用。它不会越过MAC和DAC限制
CAP_FSETID功能:
越过当设置文件的S_ISUID和S_ISGID位的时候,用户的ID必须和所有者ID匹配的限制,设置S-ISGID位的时候,组ID
必须和所有者ID匹配的限制,用chown来设置S_ISUID和S_ISGID为的功能限制
CAP_FS_MASK功能:
用来回应suser()或是fsuser()。
CAP_KILL功能:
一个有有效用户ID的进程发送信号时必须匹配有效用户ID的功能会越过
CAP_SETGID功能:
允许setgid() 功能, 允许setgroups()
允许在socket里伪造gid
CAP_SETUID功能:
允许set*uid()功能 允许伪造pid在socket
CAP_SETPCAP 功能:
把所有的许可给所有的pid。或是把所有的许可删除
CAP_LINUX_IMMUTABLE功能:
允许更改S_IMMUTABLE和S_APPEND文件属性
CAP_NET_BIND_SERVICE功能:
允许绑定1024下的TCP/UDP套接字
CAP_NET_BROADCAST功能:
允许广播,监听多点传送
CAP_NET_ADMIN功能:
&允许配置接口
允许管理IP防火墙IP伪装和帐户
允许配置socket调试选项
允许修改路由表
允许配置socket上的进程的组属性
允许绑定所有地址的透明代理
允许配置TOS(服务类型)
允许配置混杂模式
允许清除驱动状态
允许多点传送
允许读或写系统记录
CAP_NET_RAW功能:
允许用RAW套接字
允许用PACKET套接字
CAP_IPC_LOCK功能:
允许琐定共享内存段
允许mlock和mlockall
CAP_IPC_OWNER功能:
越过IPC所有权检查
CAP_SYS_MODULE功能:
&插入或删除内核模块
CAP_SYS_RAWIO功能:
允许ioperm/iopl和/dev/prot的访问
允许/dev/mem和/dev/kmem访问
允许块设备访问(/dev/[sh]d??)
CAP_SYS_CHROOT功能:
允许chroot()
CAP_SYS_PTRACE功能:
允许ptrace()任何进程
CAP_SYS_PACCT功能:
允许配置进程帐号
CAP_SYS_ADMIN功能:
允许配置安全钥匙
允许管理随机设备
允许设备管理
允许检查和配置磁盘限额
允许配置内核日志
允许配置域名
允许配置主机名
允许调用bdflush()命令
允许mount()和umount()命令
允许配置smb连接
允许root的ioctls
允许nfsservctl
允许VM86_REQUEST_IRQ
允许在alpha上读写pci配置
允许在mips上的irix_prctl
允许刷新所有的m68k缓存
&允许删除semaphores
用CAP_CHOWN去代替&chown&IPC消息队列,标志和共享内存
允许锁定或是解锁共享内存段
允许开关swap
允许在socket伪装pids
允许设置块设备的缓存刷新
允许设置软盘驱动器
允许开关DMA开关
允许管理md设备
允许管理ide驱动
允许访问nvram设备
允许管理apm_bios,串口或是bttv电视设备
允许在isdn CAPI的驱动下生成命令
允许读取pci的非标准配置
允许DDI调试ioctl
允许发送qic-117命令
允许启动或禁止SCSI的控制和发送SCSI命令 允许配置加密口令在回路文件系统上
CAP_SYS_BOOT功能:
允许用reboot() 命令
CAP_SYS_NICE功能:
允许提高或设置其他进程的优先权
允许在自己的进程用FISO和实时的安排和配置
CAP_SYS_RESOURCE功能:
越过资源限制,设置资源限制
越过配额限制
越过保留的ext2文件系统
允许大于64hz的实时时钟中断
越过最大数目的控制终端
越过最大数目的键
CAP_SYS_TIME功能:
允许处理系统时钟
允许_stime
允许设置实时时钟
CAP_SYS_TTY_CONFIG功能:
&允许配置终端设备
允许vhangup()终端
返回值
PR_GET_DUMPABLE 和 PR_GET_KEEPCAPS 成功时返回0或者1。其他的option值都是成功时返回0。
错误时返回 -1,并设置相应的错误号。
EINVAL————option的值不正确,或者当它是PR_SET_PDEATHSIG时,参数arg2的值不是0或者信号数字。
EBADF————无效的描述符
实例:于多线程应用程序,如果能够给每个线程命名,那么调试起来的便利是不言而喻的。
#include&stdio.h&
#include&pthread.h&
#include&sys/prctl.h&
void* tmain(void*arg)
char name[32];
prctl(PR_SET_NAME,(unsignedlong)&xx&);
prctl(PR_GET_NAME,(unsignedlong)name);
printf(&%s/n&, name);
int main(void)
pthread_create(&tid,NULL, tmain,NULL);
pthread_join(tid,NULL);
编 译并运行:
xiaosuo@gentux test $ gcc t_threadname.c -lpthread
xiaosuo@gentux test $ ./a.out
在 另一个终端,通过ps找到a.out的pid:
xiaosuo@gentux test $ ps aux | grep a.out
&xiaosuo 2 &0.0 14144 & 544 pts/6 & &Sl+ 16:23 & 0:00 ./a.out
看命名是否奏效:
xiaosuo@gentux test $ cd /proc/29882/task/
xiaosuo@gentux task $ ls
xiaosuo@gentux task $ cd 29883/
xiaosuo@gentux 29883 $ cat cmdline
./a.outxiaosuo@gentux 29883 $
有点儿郁闷,cmdline显示的竟然还是./a.out。通过 运行时打印的xx和strace检查prctl的返回值确认prctl确实成功运行。怀疑这个名字只能通过prctl获得,有点儿失落,可心仍不甘。查看 ps的man,并实验,终于找到了&xx&:
xiaosuo@gentux 29883 $ ps -L -p 29882
& PID & LWP TTY & & & & &TIME CMD
& pts/6 & &00:00:00 a.out
& pts/6 & &00:00:00 xx
Linux下进程重命名的方法:
使用系统函数prctl(),声明如下:
#include &sys/prctl.h&
int prctl(int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5);
具体用法请参考http://www.kernel.org/doc/man-pages/online/pages/man2/prctl.2.html
&进程重命名代码:
prctl(PR_SET_NAME, “process_name”, NULL, NULL, NULL);
第一个参数是操作类型,指定PR_SET_NAME,即设置进程名
第二个参数是进程名字符串,长度至多16字节
from:&http://blog.csdn.net/zuokong/article/details/7318154
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:767992次
积分:7846
积分:7846
排名:第2577名
原创:12篇
转载:581篇
评论:44条
(3)(1)(3)(1)(1)(2)(22)(14)(2)(1)(3)(8)(4)(7)(23)(2)(36)(24)(4)(4)(2)(1)(3)(7)(5)(20)(2)(8)(3)(4)(5)(2)(19)(6)(2)(1)(2)(3)(12)(32)(56)(44)(11)(36)(10)(22)(26)(2)(46)(29)(7)9065人阅读
C/C++编程(9)
今天在看项目代码时,发现了一个以前没有用过的函数:prctl()。查阅相关资料有所得,现总结如下
&&&&&&&&&&&&&&&&&&&&&不求面面俱到,但求言简意赅&&&&&&&&&&&&&&&&&&&&&&&&
1 》》函数原型《《
#include &sys/prctl.h&
int prctl(int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5);
2&》》功 & & & &能《《
prctl(PR_SET_NAME, “process_name”)
第一个参数是操作类型,指定PR_SET_NAME,即设置进程名
第二个参数是进程名字符串,长度至多16字节
OK,很简单吧!
3&》》实 & & & &例《《
void setPthreadName(char *name)
if(name != NULL)
(void)prct(15, (unsigned long)name);//lname 最多16个字符
详细用法参考:http://www.kernel.org/doc/man-pages/online/pages/man2/prctl.2.html
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:160267次
积分:1925
积分:1925
排名:千里之外
原创:37篇
转载:13篇
(6)(13)(7)(7)(2)(3)(12)下次自动登录
现在的位置:
& 综合 & 正文
prctl()函数应用
int prctl(int option,unsigned longarg2,unsigned long arg3,unsigned long arg4,unsigned long arg5)
这个系统调用指令是为进程制定而设计的,明确的选择取决于option:
PR_GET_PDEATHSIG :返回处理器信号;
PR_SET_PDEATHSIG :arg2作为处理器信号pdeath被输入,正如其名,如果父进程不能再用,进程接受这个信号。
PR_GET_DUMPABLE :返回处理器标志
PR_SET_DUMPABLE :arg2作为处理器标志dumpable被输入。
PR_GET_NAME :返回调用进程的进程名字给参数arg2; (Since Linux2.6.9)
PR_SET_NAME :把参数arg2作为调用进程的经常名字。(SinceLinux 2.6.11)
PR_GET_TIMING :
PR_SET_TIMING :判定和修改进程计时模式,用于启用传统进程计时模式的
PR_TIMING_STATISTICAL,或用于启用基于时间戳的进程计时模式的
PR_TIMING_TIMESTAMP。
CAP_CHOWN功能:
在一个_POSIX_CHOWN_RESTRICTED功能定义的系统。这会越过改变系统文件所有者和组所有的权限
CAP_DAC_OVERRIED功能:
如果_POSIX_ACL定义,就会越过所有的DAC访问,包括ACL执行访问,用CAP_LINUX_IMMUTABLE功能来排除
CAP_DAC_READ_SEARCH功能:
如果_POSIX_ACL定义,就会越过所有的DAC的读限制,
并在所有的文件和目录里搜索,包括ACL限制。用CAP_LINUX_IMMUTABLE来限制DAC访问
CAP_FOWNER功能:
越过文件说有的允许限制,如文件的所有者ID必须和用户ID一样,除了CAP_FSETID可用。它不会越过MAC和DAC限制
CAP_FSETID功能:
越过当设置文件的S_ISUID和S_ISGID位的时候,用户的ID必须和所有者ID匹配的限制,设置S-ISGID位的时候,组ID
必须和所有者ID匹配的限制,用chown来设置S_ISUID和S_ISGID为的功能限制
CAP_FS_MASK功能:
用来回应suser()或是fsuser()。
CAP_KILL功能:
一个有有效用户ID的进程发送信号时必须匹配有效用户ID的功能会越过
CAP_SETGID功能:
允许setgid() 功能, 允许setgroups()
允许在socket里伪造gid
CAP_SETUID功能:
允许set*uid()功能 允许伪造pid在socket
CAP_SETPCAP 功能:
把所有的许可给所有的pid。或是把所有的许可删除
CAP_LINUX_IMMUTABLE功能:
允许更改S_IMMUTABLE和S_APPEND文件属性
CAP_NET_BIND_SERVICE功能:
允许绑定1024下的TCP/UDP套接字
CAP_NET_BROADCAST功能:
允许广播,监听多点传送
CAP_NET_ADMIN功能:
允许配置接口
允许管理IP防火墙IP伪装和帐户
允许配置socket调试选项
允许修改路由表
允许配置socket上的进程的组属性
允许绑定所有地址的透明代理
允许配置TOS(服务类型)
允许配置混杂模式
允许清除驱动状态
允许多点传送
允许读或写系统记录
CAP_NET_RAW功能:
允许用RAW套接字
允许用PACKET套接字
CAP_IPC_LOCK功能:
允许琐定共享内存段
允许mlock和mlockall
CAP_IPC_OWNER功能:
越过IPC所有权检查
CAP_SYS_MODULE功能:
插入或删除内核模块
CAP_SYS_RAWIO功能:
允许ioperm/iopl和/dev/prot的访问
允许/dev/mem和/dev/kmem访问
允许块设备访问(/dev/[sh]d??)
CAP_SYS_CHROOT功能:
允许chroot()
CAP_SYS_PTRACE功能:
允许ptrace()任何进程
CAP_SYS_PACCT功能:
允许配置进程帐号
CAP_SYS_ADMIN功能:
允许配置安全钥匙
允许管理随机设备
允许设备管理
允许检查和配置磁盘限额
允许配置内核日志
允许配置域名
允许配置主机名
允许调用bdflush()命令
允许mount()和umount()命令
允许配置smb连接
允许root的ioctls
允许nfsservctl
允许VM86_REQUEST_IRQ
允许在alpha上读写pci配置
允许在mips上的irix_prctl
允许刷新所有的m68k缓存
允许删除semaphores
用CAP_CHOWN去代替"chown"IPC消息队列,标志和共享内存
允许锁定或是解锁共享内存段
允许开关swap
允许在socket伪装pids
允许设置块设备的缓存刷新
允许设置软盘驱动器
允许开关DMA开关
允许管理md设备
允许管理ide驱动
允许访问nvram设备
允许管理apm_bios,串口或是bttv电视设备
允许在isdn CAPI的驱动下生成命令
允许读取pci的非标准配置
允许DDI调试ioctl
允许发送qic-117命令
允许启动或禁止SCSI的控制和发送SCSI命令 允许配置加密口令在回路文件系统上
CAP_SYS_BOOT功能:
允许用reboot() 命令
CAP_SYS_NICE功能:
允许提高或设置其他进程的优先权
允许在自己的进程用FISO和实时的安排和配置
CAP_SYS_RESOURCE功能:
越过资源限制,设置资源限制
越过配额限制
越过保留的ext2文件系统
允许大于64hz的实时时钟中断
越过最大数目的控制终端
越过最大数目的键
CAP_SYS_TIME功能:
允许处理系统时钟
允许_stime
允许设置实时时钟
CAP_SYS_TTY_CONFIG功能:
允许配置终端设备
允许vhangup()终端
PR_GET_DUMPABLE 和 PR_GET_KEEPCAPS 成功时返回0或者1。其他的option值都是成功时返回0。
错误时返回 -1,并设置相应的错误号。
EINVAL————option的值不正确,或者当它是PR_SET_PDEATHSIG时,参数arg2的值不是0或者信号数字。
EBADF————无效的描述符
实例:于多线程应用,如果能够给每个线程命名,那么调试起来的便利是不言而喻的。
#include&stdio.h&#include&pthread.h&#include&sys/prctl.h&
void* tmain(void*arg){char name[32];prctl(PR_SET_NAME,(unsignedlong)"xx");prctl(PR_GET_NAME,(unsignedlong)name);printf("%s/n", name);while(1)sleep(1);}
int main(void){pthread_t tid;pthread_create(&tid,NULL, tmain,NULL);pthread_join(tid,NULL);
return 0;}
编 译并运行:
xiaosuo@gentux test $ gcc t_threadname.c -lpthread
xiaosuo@gentux test $ ./a.out
在 另一个终端,通过ps找到a.out的pid:
xiaosuo@gentux test $ ps aux | grep a.out
0:00 ./a.out
看命名是否奏效:
xiaosuo@gentux test $ cd /proc/29882/task/
xiaosuo@gentux task $ ls
xiaosuo@gentux task $ cd 29883/
xiaosuo@gentux 29883 $ cat cmdline
./a.outxiaosuo@gentux 29883 $
有点儿郁闷,cmdline显示的竟然还是./a.out。通过 运行时打印的xx和strace检查prctl的返回值确认prctl确实成功运行。怀疑这个名字只能通过prctl获得,有点儿失落,可心仍不甘。查看 ps的man,并实验,终于找到了"xx":
xiaosuo@gentux 29883 $ ps -L -p 29882
00:00:00 a.out
00:00:00 xx
strace 后知道这个“xx”竟然隐匿于stat和status:
xiaosuo@gentux 29883$ cat stat
&&&&推荐文章:
【上篇】【下篇】后使用快捷导航没有帐号?
查看: 733|回复: 7
请问一下6572机器出厂就获取到ROOT权限,请问要做什么修改?
请问一下6572机器出厂就获取到ROOT权限,请问要做什么修改? 哪位改过??
自己先顶一下! 国际惯例
如何永久性开启adb 的root权限
(出处: 手机开发联盟)
如何永久性开启adb 的root权限
/forum.php?mod=viewthread&tid=15052&fromuid=4
& && && && && &谢谢了!
[Description]
如何永久性开启adb 的root权限
user debug root adb adbd
[Solution]
adb 的root 权限是在system/core/adb/adb.c 中控制。主要根据ro.secure 以及 ro.debuggable 等system property 来控制。默认即档ro.secure 为0 时,即开启root 权限,为1时再根据ro.debuggable 等选项来确认是否可以用开启root 权限。为此如果要永久性开启adb 的root 权限,有两种修改的方式:
1. 修改system property ro.secure, 让ro.secure=0。
2. 修改adb.c 中开启root 权限的判断逻辑。
下面详细说明这两种修改方式:
第一种方法. 修改system property ro.secure, 让ro.secure=0。
(1)修改alps/build/core/main.mk
ifneq (,$(user_variant))
&&# Target is secure in user builds.
&&ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=1
将ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=1 改成 ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=0
(2)在android JB 版本(4.1) 以后,google 从编译上直接去除了adbd 的user 版本root 权限, 为此您要修改system/core/adb/Android.mk 中的编译选项ALLOW_ADBD_ROOT, 如果没有打开这个选项,那么adb.c 中将不会根据ro.secure 去选择root 还是shell 权限,直接返回shell 权限。因此您必须需要Android.mk 中的第126行:
& & ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
& & ===& ifneq (,$(filter userdebug user eng,$(TARGET_BUILD_VARIANT)))
第二种方法. 修改adb.c 中开启root 权限的判断逻辑。这里针对4.1 以后版本 和4.1以前版本有所区别。
(1).如果是JB 4.1 以后版本,直接修改函数should_drop_privileges() 函数, 清空这个函数,直接返回 0 即可。返回0 即开启root 权限。
(2).如果是JB 4.1 以前版本,直接修改函数adb_main 函数,在
& & /* don't listen on a port (default 5037) if running in secure mode */
& & /* don't run as root if we are running in secure mode */
& & if (secure) {
& && &&&struct __user_cap_header_
& && &&&struct __user_cap_data_
& && &&&if (prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0) != 0) {
& && && && &exit(1);
在这段代码前加一行:
& & secure = 0;&&//mtk71029 add for root forever.
& & /* don't listen on a port (default 5037) if running in secure mode */
& & /* don't run as root if we are running in secure mode */
& & if (secure) {
& && &&&struct __user_cap_header_
& && &&&struct __user_cap_data_
& && &&&if (prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0) != 0) {
& && && && &exit(1);
[测试与确认]
当修改完成后,只需要重新build bootimage ,然后download 即可,然后到setting 中开启debug 选项,adb 连接后,会显示 #, 即root 成功。
如果贵司没有拿到adb 的source, 而贵司又需要自己修改adb 的话, 那么就麻烦贵司提交eService。由我司进一步协助贵司处理。
JB 版本后user build + eng bootimage 无法开机
如何打开user debug选项
JB 4.2 user 版本的开发选项不见了,如何打开adb debug
Dear customer.
您可以按照FAQ 将adb 的root 权限打开。 也可以直接将su 内置到版本中,改法也很简单:
alps/system/extras/su/android.mk 修改其tags 变成optional, 然后将su.c 里面的49-52 行删除即可,即任意的人都可以使用root 权限
Yanghui Li
Dear customer.
您可以按照FAQ 将adb 的root 权限打开。 也可以直接将su 内置到版本中,改法也很简单: ...
你好,兄弟。
我现在不是要adb root的权限,是一键root那种apk的权限。
有没有做过
你好,兄弟。
我现在不是要adb root的权限,是一键root那种apk的权限。
有没有做过
楼上说的就是superuser的权限啊,你先试下啊
论坛资料为网友自由上传,与本论坛无关。
Powered by
关注一牛微信
获取手机验证码

我要回帖

更多关于 ubuntu需要root权限 的文章

 

随机推荐