安卓系统如何授予应用程序root权限

安卓系统如何授予应用程序root权限,第1张

获取root可以在手机安全中心中开启,这里以步步高s6手机为例,具体步骤如下:

1、首先,打开和孝系统桌面“安全中心”应用APP,进入安全中心主页面。

2、进入安全中心页面之后,在主页面中,点击页面右下角“应用管理”菜单选项。

3、进入应用管理页面斗埋之后,点击页面右上角“权限”菜单按钮,进入空棚蚂权限管理页面。

4、在权限管理页面中,点击页面底部“开启Root权限”菜单按钮。

5、在打开的页面中下载完安装包,安装完成获得ROOT权限。

一般来说, Android 下的清尺激应用程序可以逗直接地得到的最大的权限为 system ,但是如果我们需要在程序中执行某些需要 root 权限的命令,如 ifconfig 等,就需要 root 权限了。按照 Simon 的文章中提到的,应用程序有以下两种办法临时获得 root 权限:

1)实现一个 init 实现一个 Service ,来帮助 Android 应用程序执行 root 权限的命令。

2)实现一个虚拟设备,这个设备帮困铅助 Android 应用程序执行 root 权限的命令。

第二种办法我这里没有尝试,暂时也不会。这里讲讲我在实现第一种办法的过程和遇到的一些问题。

1. 将我们要执行的命令写成脚本,或者可执行程序。

下面是我的脚本 ifconfig_test.sh :

# ! /system/bin/sh

ifconfig

注意: 脚本的第一行必须为 # ! /system/bin/sh ,否则无法执行,通过 dmesg 可以查看到信息内容为 cannot execve ./ifconfig_test.sh: Exec format error

也可以采用 C/C++ 编写需要执行的命令或者程序,并在编译 image 的时候编译成可执行程序。

2. 在 init.rc 中注册 service

Android 中的 service 需要在 init.rc 中注册, Init.rc 中定义的 Service 将会被 init 进程创建,这样将可以获得 root 权限。当得到相应的通知(通过属性设置)后, init 进程会启动该 service 。

本文中注册的内容如下:

service ifconfig_test /system/etc/ifconfig_test.sh

oneshot

disabled

其中, oneshot 表示程序退出后不再重新启动, disabled 表示不在系统启动时启动。

注意: 这里 service name 不能超过 16 个字符。我之前的 service name 由于定义的比较长, 18 个字符,设置属性通知 service 启动后查看 dmesg 可以看到提示: init: no such service 。查看 /system/core/init/parser.c 的源代码,在 parse_service->valid_name 函数中可以看到如下内容: if (strlen(name) >16) { return 0} ,证明 service 的名字的确不能超过 16 个字符。

3. 将 Android 应用程序提升为 system 权限

既然应用程序可以通过启动 service 获得 root 权限,那么岂不是很不安全。 Android 考虑到了这点,规定只有 system 权限的应用程序才能设置属性,通知 service 启动。关于提升 system 权限的文章网上已有很多,这里就不再细说,

4. 在应用程序中添加属性设置代码

前面已经提到,对于 Android 来说,应用程序通知 init 启动 service 是通过设置系统属性来完成的,具体为设置 System 系统属性 逗ctl.start地 为 逗ifconfig_test地 ,这样 Android 系统将会答袜帮我们运行 ifconfig_test 这个 service 了。

对该系统属性的设置有三种方法,分别对应三种不同的应用程序:

1) Java 代码

Android 在 Java 库中提供 System.getProperty 和 System.setProperty 方法, Java 程序可以通过他们来设置和获得属性。代码如下:

SystemProperties.set("ctl.start", "ifconfig_test")

上面的代码是通知 Android 执行 ifconfig_test service ,如果需要查询当前 service 执行的状态,如是否执行完毕,可以通过如下代码查询:

ret = SystemProperties.get("init.svc. ifconfig_test ", "")

if(ret != null &&ret.equals("stopped"))

{

return true

}

2) JNI 代码

当编写 NDK 的程序时,可以使用 property_get 和 property_set 这两个 API 来获得和设置属性。使用这两个 API 必须要包含头文件 cutils/properties.h 和链接 libcutil 库。

3) Shell 脚本

Android 提供了命令行 setprop 和 getprop 来设置和获取属性,他们可以在脚本中被使用。

由于我的程序是在 JNI 中调用脚本,脚本中又执行 ifconfig ,因此我将设置属性的部分放在了脚本中完成,代码如下:

setprop ctl.start ifconfig_test

#wait for the service until it stops

ret=1

while [ $ret -ne 0 ]

do

getprop | grep "$ENABLE_MAPPER_SRV" | grep stopped

ret=$?

done

通过上面 4 个步骤, Android 应用程序就获得了 root 权限,更具体的说,是在执行我们需要执行的命令时临时获得了 root 权限。

转载仅供参考,版权属于原作者。祝你愉快,满意请~~哦

方法步骤:第一步下一个re管理器,让re管理器允许授权后,软件可使用授权!

第二步用手机连接电脑,选择打开USB调试模式

详细介绍:

1 首先你要确定下你手机菜单上多出授权晌链管理的标志,然后如果需要删除自带软件,要下一个re管理器,让re管理器允许授权后,你的软件才可以进行使用授权!

re管理器建议下汉化版的,

2 用手机连接电脑,选择打开USB调试模式(部分ROM默认打开的,如果找不到),自动识别驱动下载(如果刷机工具认不得或者不是这个机型,可以换其他的对驱动兼容性好的,先认到手机,可以试试WANDOUJIA,360手机助手),(目前安卓版本众多,而且部分ROM封锁了ROOT权限,但是还是可以ROOT的。)目前一键ROOT工具很多,卓大师,蘑菇云,百度,360,KINGROOT,Z4ROOT,甜椒,刷机精灵,深度刷机,绿豆,SuperOneClick,你可以到XIAZAIBA下载合适的刷机工具,最好是用专用的刷机工具,比如小米专用刷机工具,选择ROOT破解,可以帮你获取ROOT权限。

3 ROOT权限获取后,必须按照SUPERUSER,,,用于分配管理权限的,ROOT后,可以使用ROOT权限玩部分特殊的软件,比如卸载预制软件,不要用自带卸载工具,轿悄推荐时第三方,,也可以更换宴帆孙字体,替换桌面,,替换为系统软件

注意:

但是ROOT后,不会升级了,因为权限转移给你了,而且不能保修哦,ROOT后,会有些不安全,比如卸载一个重要的系统软件后,整个手机安卓系统会瘫痪,所以卸载软件时一定要记得先连接那个软件时干什么的,如果刷机的话,尽量注意到论坛学习怎么热键进入RECOVER刷机模式,比如A60是开机键+音量加键;V880是开机键+音量减键;A65,A60+和A60也是一个模式,刷机包也通用,V880+和V880也是通用模式的。安卓手机其实多摸索,没有什么搞不定的。比如A66TROOT工具和刷机工具不一样的,,用这个工具ROOT的,反而不能刷机,能刷机的却不能ROOT掉这个手机


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12448564.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存