首先,你要确认你要打开adbd 的root 才干,或者让app 它有可能获得root 才干。

 

(1). adbd 的root 才干

我们通常debug user 当问题的版本号, 或行为user 版本号monkey test 如果将这项工作,debug.

 

假设你想user 版本号adb root 权限默认关闭, 而在想开启时, 能够通过project模式中的设置项开启, 那么请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.xda-developers.com/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 要查看是否在命令行$切换到#, 这一假说切换成功。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

android user如何打开一个版本号root才干的更多相关文章

  1. Android DevArt1:假设当前Activity为A,如果这时用户打开一个新的Activity B,那么B的onResume和A的onPause哪个先执行呢?

    问题描述:假设当前Activity为A,如果这时用户打开一个新的Activity B,那么B的onResume和A的onPause哪个先执行呢? GitHub Demo 废话少说,上代码,Activi ...

  2. Qt for Android (三) 打开Android相册并选一个图片进行显示

    Qt for Android (三) 这两天弄了一下android相册的相关功能.还是花了挺长时间的,这里总结一下,避免以后再踩坑.同时也在这篇文章里面补齐一些android开发的基础支持 打开And ...

  3. Android课程---Oracle VM VirtualBox出现不能为虚拟机打开一个新任务

    因工作需要在Win7下增添了Win7虚拟系统,随着VirtualBox 4.326的版本更新,用户们也开始升级.一用户在升级后发现原来创建的虚拟机无法打开,提示信息为:不能为虚拟电脑win7打开一个新 ...

  4. [转载] Android Studio 上第一个 Xposed 模块

    本文转载自: http://www.open-open.com/lib/view/open1451364108964.html 环境: 已root手机一枚 Android Studio一枚 官方文档参 ...

  5. android2.3 View视图框架源码分析之一:android是如何创建一个view的?

    View是所有控件的一个基类,无论是布局(Layout),还是控件(Widget)都是继承自View类.只不过layout是一个特殊的view,它里面创建一个view的数组可以包含其他的view而已. ...

  6. Mac下改动Android Studio 所用的JDK版本号

    Mac下改动Android Studio 所用的JDK版本号 @author ASCE1885 近期项目从Eclipse+Ant构建模式转移到了Android Studio+Gradle构建模式.自然 ...

  7. Android调用浏览器打开网址遇到的问题

    我自己的手机(一加一代,升级了氢OS),然后在点击游戏内一个"隐私政策"-- 需要打开一个网页,然后就crash了.出错的信息如下: 完全是看不出来,然后我单独写了一个demo来测 ...

  8. Android 通过网页打开自己的APP(scheme)

    Android 通过网页打开自己的APP(scheme) 分类: android2014-07-09 17:35 8565人阅读 评论(2) 收藏 举报 通过用手机的浏览器(内置,第三方都可)访问一个 ...

  9. Android开发之打开闪光灯录制视频

    Android的SDK在线API上对录制视频的方法.步骤都写得非常清楚,但是如果没有一点思路,写起来也比较式费事.录制视频的全过程要打开闪光灯(可能是因为项目需要,或者特殊原因),则必须按照一定的顺序 ...

随机推荐

  1. veridata实验举例(6)验证agent启动先后顺序是否对捕获update操作有影响

    veridata实验举例(6)验证agent启动先后顺序是否对捕获update操作有影响 续接veridata实验系列  上篇:"veridata实验举例(5)改动主键上的列值.update ...

  2. C#-gdi画图,双缓冲画图,Paint事件的触发---ShinePans

    在使用gdi技术画图时,有时会发现图形线条不够流畅,或者在改变窗口大小时会闪烁不断的现象.(Use DoubleBuffer to solve it!)                         ...

  3. Android学习十九:ContentProvider初步

    一.Content Provider基本概念 1.ContentProvider为存储和获取数据提供了统一的接口.ContentProvide对数据进行封装.不用关心数据存储的细节.使用表的形式来组织 ...

  4. AE+SceneControl源代码共享

    近来的,博友发私信或邮件交换,第一次使用前SceneControl代做一点project股票,做的很粗糙.我们希望对大家有帮助,欢迎留言交流哈萨克斯坦. 除了主开.保存.数据加载.询价,几个功能主要是 ...

  5. 同步github工程gitcafe

    github固然好.仅仅是国内訪问有点慢. 为了提高博客訪问速度我决定把github上托管的博客同步到gitcafe上.最好能在DNS那里做CDN,可是貌似没有免费的服务.那直接指向gitcafe好了 ...

  6. 忘记root密码时如何重设密码

    哈哈,太久没用linux了,把自己的登陆密码给忘了.今天找了下方法如何重设密码以登陆系统. 此文仅以作备忘. 忘记linux密码时,可以使用单用户模式进入linux,修改root密码.1.在linux ...

  7. LeetCode——Container With Most Water

    Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai).  ...

  8. 【LeetCode with Python】 Rotate Image

    博客域名:http://www.xnerv.wang 原标题页:https://oj.leetcode.com/problems/rotate-image/ 题目类型:下标计算 难度评价:★★★ 本文 ...

  9. HibernateReview Day2–Hibernate体系结构

    本文摘自 李刚 著 <Java EE企业应用实战> 现在我们知道了一个概念Hibernate Session,只有处于Session管理下的POJO才具有持久化操作能力.当应用程序对于处于 ...

  10. android一些面试题目

    1.ListView怎么提高滑动效率 2.说下你做过项目的包的构架,(联网,解析,activity,database) 重点 3.载入大量图片怎么做(包含小图和查看大图) 怎么降低一次跟server的 ...