微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > 请问一下6572机器出厂就获取到ROOT权限,请问要做什么修改?

请问一下6572机器出厂就获取到ROOT权限,请问要做什么修改?

时间:10-02 整理:3721RD 点击:
请问一下6572机器出厂就获取到root权限,请问要做什么修改? 哪位改过?

自己先顶一下! 国际惯例

如何永久性开启adb 的root权限
http://www.16rd.com/forum.php?mo ... 15052&fromuid=4
(出处: 手机开发联盟)

               谢谢了!

[Description]
如何永久性开启adb 的root权限

[Keyword]
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 header;
        struct __user_cap_data_struct cap;
        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 header;
        struct __user_cap_data_struct cap;
        if (prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0) != 0) {
            exit(1);
        }
  
[测试与确认]
当修改完成后,只需要重新build bootimage ,然后download 即可,然后到setting 中开启debug 选项,adb 连接后,会显示 #, 即root 成功。
如果贵司没有拿到adb 的source, 而贵司又需要自己修改adb 的话, 那么就麻烦贵司提交eService。由我司进一步协助贵司处理。
[相关FAQ]
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 权限
thanks
Yanghui Li

你好,兄弟。
我现在不是要adb root的权限,是一键root那种apk的权限。
有没有做过

楼上说的就是superuser的权限啊,你先试下啊

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top