android 获取应用权限应用程序怎样获取root权限?

Root是什么意思,安卓root权限获取软件有哪些?
Root是什么意思,安卓root权限获取软件有哪些?
------,<span id="wppvp_tv_2人学习
Root是什么意思,安卓root权限获取软件有哪些?
Google的Android系统Root相当于Windows系统的Administrator,就是超级用户(超级管理员),什么都可以进行删除,安装修改的一个核心位置。
在Android系统、Linux系统、Unix系统中,系统的超级用户默认命名为root。root是系统中唯一的超级用户,具有系统的全部权限,拥有root权限,可以对Android的系统文件进行修改、删除,可以启动或停止某一个进程,删除或增加用户,增加或禁用某一个硬件,可以安装第三方系统主题等。root权限的功能非常强大,如果不了解Android系统,误删了系统文件,会导致系统崩溃。因此,Android系统默认是没有root权限的,要想获得root权限,必须用破解的方法来实现。
root就是手机的神经中枢,它可以访问和修改你手机几乎所有的文件,这些东西可能是制作手机的公司不愿意你修改和触碰的东西,因为他们有可能影响到手机的稳定,还容易被一些黑客入侵。
安卓手机为什么要获取root权限
其实用root的权限主要是因为我们很多东西是受限制的,我们只能利用这些权限来做我们被限制的去做的事情,比如Google禁止我们看到市场里很多免费或付费软件,我们可以用Market进去看;很多朋友只能看不能下,不能绑定gmail,我们可以修改host来搞定他们,对于一些定制机,有着不需要的定制软件,就可以通过RE进行操作。但这些都需要root权限(由于Root权限对于系统具有最高的统治权,便可方便的对于系统的部件进行删除或更改。对于玩家而言,只有获得Root权限,我们便可随心所欲地对自己的爱机进行“重新包装”,感受新版本软件的优点)  例如:当HTC Hero手机通过USB线连上电脑时,sync工具就会自动启动,总是在notification那里看到。对于Windows用户,还有工具可以同步,对于Mac/Linux用户来说,没用。有没有办法解决呢?当然有了!  这里的关键就是ad remount,这是一个重新mount你的分区的命令,让你的system分区从只读变成可读可写,只有获得了root权限才可能运行。
不需要ROOT权限的人
对于不懂任何命令行和sdk的东西的人。如能随着HTC官方的升级而自动更新(OTA),不想每次更新都要刷一下机器。
一年也下不了10个软件的人,Android手机自带的商务功能完全够我用了,不想折腾手机。
取得安卓手机root的好处
可以备份系统
使用高级的程序
可以通过RE进行修改系统的程序
把程序安装在SD卡上
修改系统文件
最重要的是 我们可以汉化
拥有ROOT权限,我们可以加载汉化包,实现系统汉化!由于目前的系统固件版本firware都是1.0,所以都不支持简体中文输入,但是支持简体中文显示开发团队对此展开了工作,现在的Zhao 1.5/1.6 都是以获得ROOT权限为基础才可进行的汉化包。
我们可以通过ABUS查看已安装的软件
虽然没有ROOT权限,我们依然可以通过ABUS来安装软件和游戏,但是如果拥有ROOT权限的G1,我们可以通过ABUS查看其安装过的软件列表来方便我们管理。
我们可以更改主题
目前阶段,我们可以通过升级update.zip来实现更换主题的功能,当然update.zip包并不是一个单独的主题文件,其实就是升级一下,不过如果没有ROOT权限,我们就不能实现更换主题的功能,至少目前这样。
我们可以正常使用一些软件 比如Screenshot
很多软件是需要访问并读写内部ROOT的,比如Screenshot,就必须有ROOT权限才可正常使用,如果相应的,我们获得了ROOT权限,那么有些软件就可以正常使用,并能发挥其特性了。
平板电脑、智能手机随处可见,绝大多数平板电脑、智能手机的操作系统是Android(安卓)。很多Android用户,在使用时,喜欢在系统中安装很多实用的软件,比如360手机卫士、安卓优化大师、91手机助手等。但在实际使用中却发现,这些软件中有些提示需要root权限才能运行,比如360手机卫士提示需要root权限才能清除顽固手机木马;软件安装多了,很多软件都会设置成为开机自动启动,造成开机速度非常慢,想用360手机卫士、安卓优化大师之类的软件来管理开机启动项目,却被告知没有root权限,怎么办呢?
一键root的方法
root并没有想象中的那么难,目前有不少软件可以做到。像Z4root、UniversalAndRoot、GingerBreak和等root 软件都比较方便。
1.Hacker,喜欢对系统进行Hacking的人。
2.开发人员,命令行控制设备是必须的。
3.是普通用户,但一些特殊软件安装不了,要求ROOT权限。
4.一个软件超级体验狂,每天不下载50个应用程序尝试晚上就睡不着。Android手机自带存储空间太小,所以要将软件装到SD卡上。
5.买Android就是为了自己可以有选择性的定制系统,否则就会选择入手iPhone了。
6.对于手机自带应用感到烦恼或者手机内存不足的人。
取得root权限的好处有哪些?
1、可以备份系统。
2、使用高级的程序,例如屏幕截图、root explorer等。
3、修改系统的程序。
4、把程序安装在SD卡上(Android2.2以下默认是不支持的)。
5、修改系统文件。
6、可以通过ABUS查看已安装的软件。
虽然没有ROOT权限,我们也可以通过ABUS来安装软件和游戏,但是如果拥有ROOT权限的G1,我们可以通过ABUS查看其安装过的软件列表,方便管理。
7、可以正常使用一些软件,比如Screenshot
很多软件是需要访问并读写内部ROOT的,比如Screenshot,就必须有ROOT权限才可正常使用,如果相应的,我们获得了ROOT权限,那么有些软件就可以正常使用,并能发挥其特性了。
8、可以更改主题。
我们可以通过升级update.zip来实现更换主题的功能。update.zip包并不是一个单独的主题文件,如果没有ROOT权限,我们就无法实现更换主题的功能。
ROOT权限获取软件有哪些?
一、z4root
z4root是来自xda上的一位大拿开发的一键root工具,相当强大,第一是基本适配所有设备,第二是100%安全的root,不用怕root后机器变砖这些危险,几乎所有机型都可以用这个软件获取root。
有些机型因为有各种锁,无法root,有些机型只能获取临时root,有些机型可以获取永久root,所以各位可以试试。
二、SuperOneClick
SuperOneClick是目前最强悍的Android手机一键Root工具软件之一,SuperOneClick目前的最新版是2.3.3,SuperOneClick几乎支持Android目前所有的版本。SuperOneClick的一键Root的方法非常简单,只需点击"Root"就能让你的手机自动获取Root权限。
三、Kingroot
kingroot(又称“一键root”)是由国内个人开发者团队:Kingroot 工作室开发,针对国人语言、使用习惯的获取ROOT权限软件。软件适用于Android(安卓)2.2- Android(安卓)2.3手机获取root权限的操作。一键获取权限,操作简单稳定。基本适配所有Android(安卓)手机设备,是100%安全的root权限获取工具,完全不用担心root失败后机器变砖头。目前,kingroot团队已经开发出kingroot PC,用于电脑端获取手机root权限,可完美一键获取市面上绝大部分Android2.2-Android4.0/5.0手机的永久root权限。
四、VisioNaryplus
visionaryplus是一款超强的一键ROOT工具,支持大部分2.2系统以上机型破解,支持临时ROOT、完全ROOT和取消ROOT三种功能,操作简单。
五、Universal Androot
Universal Androot是把exploit走后门的流程写出UI形式,让使用者只要按一下按钮就可以Root,但不是什么每款Android手机都可 以成功,像Samsung I9000就没办法通过该软件获取Root,这时候就推荐使用上面推荐的z4root。这是由中国台湾技术人员发布的应用。如果担心会破坏保修,可以按下 UnRoot ,就可恢复到原有的状态。
想要获取Android手机ROOT权限吗?ROOT教程太复杂?Gold Card制作太麻烦?不会进工程模式?现在已经不用这么麻烦了,天下没有没有漏洞的OS,Universal Androot的推出可让你3秒钟内获取ROOT权限。
让使用者只要按一下按钮就可以Root,安装这个软件,打开软件,选择你的固件版本。就可以一键提取root了。如果担心会破坏保修,可以按下 UnRoot ,就可回复原有的状态。
注:并非所有机型都成功,但是此软件安全性非常高,即使不成功也不会对手机造成任何影响。
六、GingerBreak
GingerBreak是一款非常有用的一键获取ROOT权限的小工具,这款软件能够在Android 2.2和Android 3.0系统中正常使用!
你必须要在你的Android设备上启用USB调试;
你需要你的Android设备中有一个可用的SD卡;
GingerBreak.APK程序必须要安装到设备中,而不能安装到SD卡;
该工具使用的时候会需要一定的时间来运行,但是绝对不会超过10分钟,如果超过的话,请重新启动你的设备;
成功获取ROOT权限后,该程序将尝试重新启动你的设备。
七、Easy Root
安装该软件之后,只需要点击软件界面的“Root Me!”按钮,过几分钟后,手机就自动完成获取Root权限的过程,而用户所需要做的仅仅就是安装软件,然后轻轻点击屏幕的按钮就可以,方便简单很多。
八、安卓优化大师
安卓优化大师是一款功能强大的手机系统增强优化软件,它提供了全面有效且简便安全的手机体检、程序管理、开机加速、安装卸载、进程管理、垃圾清理、文件管理、节电管理、快捷设置九大功能模块及数个实用功能,共18个常用必备工具。使用安卓优化大师,能够有效地帮助用户了解自己的手机软硬件信息;提升手机操作效率;扫描有危险的软件;维护手机的正常运转。君,已阅读到文档的结尾了呢~~
如何使Android应用程序获得root权限——所有资料文档均为本人悉心收集,全部是文档中的精品,绝对值得下载收藏!
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
如何使Android应用程序获得root权限
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口&&&&安卓应用程序永久获取Root权限的方法
安卓应用程序永久获取Root权限的方法
压缩包内有apk,demo源码,以及NDK 安装文档,主要是教你如何在已经root过得手机上只通过一次获取root权限,以后就再也不会弹出root授权框,主要思想是绕过superuser.apk的权限检查
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
移动开发下载排行15:19 提问
android 中APK如何获取root权限?
android APK中如何获取到root权限,从而能切换到执行诸如
exec = Runtime.getRuntime().exec("su -c "+abspath);
eng版本 具有root权限吗?可是执行时报错:su: uid xxx not allowed to su,
adb root 和system root有区别吗? user版本如何仅在开发的APK中获取root权限?
user版本在我root后,还是提示有问题:像su: permission denied
还有 error running exec(). command working directory :null..
多谢了,没分了,大神们。
补充一下,其实是在做一个流量监控的防火墙,目前直接使用的是开源的droidwall源码包,但是这个包需要root权限的,想到了两个方案,第一个 是在有root权限的地方,即init.rc中添加一个service, 在其中执行相应的sh文件,该文件保存了iptables的一些命令,但是需要加载两个iptables有关的二进制文件,而且该sh文件要动态根据所选中的防火墙中禁用的APK来变化,问题是APK怎么调用这个service呢?感觉也不太好实现;第二个方案就是让终端具有root权限,在APK中通过执行Runtime.getRuntime().exec("su )来实现,但是就是这一步通不过。
按时间排序
手机要root ,然后有授权才行
首先,手机要 ROOT,然后在程序开始处加入如下代码:
String apkRoot = "chmod 777 " + getPackageCodePath();
runRootCommand(apkRoot);
就可以了。
runRootCommand 的实现如下:
public static boolean runRootCommand(String command) {
Process process =
DataOutputStream os =
process = Runtime.getRuntime().exec("su");
os = new DataOutputStream(process.getOutputStream());
os.writeBytes(command + "\n");
os.writeBytes("exit\n");
os.flush();
process.waitFor();
} catch (Exception e) {
Log.d("Phone Link",
"su root - the device is not rooted,
error message: " + e.getMessage());
} finally {
if(null != os) {
os.close();
if(null != process) {
process.destroy();
} catch (Exception e) {
e.printStackTrace();
1.Android基于Linux的权限管理系统。
2.Linux中进程具有uid和gid,gids;文件等资源有owner,group,及对应的权限。
3.Android很多文件目录的owner是root,uid为0.
4.Android预定义了一批用户,system用户uid为1000。
5.APK运行在Zygote进程中,Zygote会根据PackageManagerService提供的服务找到APK安装时候给他的aid,以此修改当前zygote进程的uid。所以apk运行后,其进程uid互不相同。
6.Settings等系统APK在编译的时候,在Android.mk文件中,设定了签名证书使用platform,而且Settings的AndroidManifest.XML中声明sharedUserid=system,所以Settings.apk会被设置为uid为1000.
7.System用户还是权限稍高一点的普通用户,一样无法访问owner为0的文件。
8.如果你有Android系统的platform证书,你就可以通过签名使得APK具备system用户身份,也就是apk运行的进程uid为1000,可以访问owner为1000的文件等资源。framework中也有很多对uid的判断,0或者1000的放行通过。
9.真正的root是使得进程uid为0. APK运行后进程uid如何变为0我没有遇到过。但是可以通过主动执行su程序,使其在新进程中以root身份运行某些命令。
10.su可执行文件需要具备s位。
11.Android 4.3将system分区挂载成nosid。所以Android 4.3上su无法运行。
您能不能具体说一下在核心配置文件中怎么配置啊?不是在核心配置文件配置配置好后,再打包成apk呀。获得root权限是不针对android版本来说的
获得root权限首先要求的是
1、这个手机系统已经被root了
2、你的应用必须获得系统签名
3、已经root的系统,一般的程序你可以执行 “su -” 获得root权限
执行shell脚本是做不到获取root权限的,目前比较靠谱的办法有两个:
一:github有一个开源的第三方库,可以让你的app获取root权限,需要用户点击同意才可以实现
二:linux下有一个busybox的工具,具体你百度一下,研究一下看是否能够做到,我的圈子里面还没有人做到了,可以反编译一下360root看看。
我以前做应用商城的也要做这个需求,当时没有实现,也是采用shell脚本的方法。
8106关注|433收录
1049关注|1393收录
其他相似问题下次自动登录
现在的位置:
& 综合 & 正文
如何使Android应用程序获得root权限
16:28 19236人阅读 (12)
写这篇前,首先要感谢
,他的两篇关于 root 权限的文章对于我的工作起到了非常大的帮助,这篇文章可以说是对他的文章的一个补充。 Simon_fu 的文章可以参考如下两个网页:
一般来说, Android 下的应用可以“直接”得到的最大的权限为 system ,但是如果我们需要在程序中执行某些需要 root 权限的命令,如 ifconfig 等,就需要 root 权限了。按照 Simon 的文章中提到的,应用程序有以下两种办法临时获得 root 权限:
实现一个 init 实现一个 Service ,来帮助 Android 应用程序执行 root 权限的命令。
实现一个虚拟设备,这个设备帮助 Android 应用程序执行 root 权限的命令。
第二种办法我这里没有尝试,暂时也不会。这里讲讲我在实现第一种办法的过程和遇到的一些问题。
将我们要执行的命令写成脚本,或者可执行程序。
下面是我的脚本 ifconfig_test.sh :
# ! /system/bin/sh
注意: 脚本的第一行必须为 # ! /system/bin/sh ,否则无法执行,通过 dmesg 可以查看到信息内容为cannot execve ./ifconfig_test.sh: Exec format error
也可以采用 C/C++ 编写需要执行的命令或者程序,并在编译 image 的时候编译成可执行程序。
在 init.rc 中注册 service
Android 中的 service 需要在 init.rc 中注册, Init.rc 中定义的 Service 将会被 init 进程创建,这样将可以获得root 权限。当得到相应的通知(通过属性设置)后, init 进程会启动该 service 。
本文中注册的内容如下:
service ifconfig_test /system/etc/ifconfig_test.sh
其中, 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 个字符。
将 Android 应用程序提升为 system 权限
既然应用程序可以通过启动 service 获得 root 权限,那么岂不是很不安全。 Android 考虑到了这点,规定只有 system 权限的应用程序才能设置属性,通知 service 启动。关于提升 system 权限的文章网上已有很多,这里就不再细说,可以参考如下两篇文章:
在应用程序中添加属性设置
前面已经提到,对于 Android 来说,应用程序通知 init 启动 service 是通过设置系统属性来完成的,具体为设置 System 系统属性 “ctl.start” 为 “ifconfig_test” ,这样 Android 系统将会帮我们运行 ifconfig_test 这个service 了。
对该系统属性的设置有三种方法,分别对应三种不同的应用程序:
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"))
当编写 NDK 的程序时,可以使用 property_get 和 property_set 这两个 API 来获得和设置属性。使用这两个API 必须要包含头文件 和链接 libcutil 库。
Shell 脚本
Android 提供了命令行 setprop 和 getprop 来设置和获取属性,他们可以在脚本中被使用。
由于我的程序是在 JNI 中调用脚本,脚本中又执行 ifconfig ,因此我将设置属性的部分放在了脚本中完成,代码如下:
setprop ctl.start ifconfig_test
#wait for the service until it stops
while [ $ret -ne 0 ]
getprop | grep "$ENABLE_MAPPER_SRV" | grep stopped
通过上面 4 个步骤, Android 应用程序就获得了 root 权限,更具体的说,是在执行我们需要执行的命令时临时获得了 root 权限。
写这篇文章前,首先要感谢
,他的两篇关于 root 权限的文章对于我的工作起到了非常大的帮助,这篇文章可以说是对他的文章的一个补充。 Simon_fu 的文章可以参考如下两个网页:
一般来说, Android 下的应用程序可以“直接”得到的最大的权限为 system ,但是如果我们需要在程序中执行某些需要 root 权限的命令,如 ifconfig 等,就需要 root 权限了。按照 Simon 的文章中提到的,应用程序有以下两种办法临时获得 root 权限:
实现一个 init 实现一个 Service ,来帮助 Android 应用程序执行 root 权限的命令。
实现一个虚拟设备,这个设备帮助 Android 应用程序执行 root 权限的命令。
第二种办法我这里没有尝试,暂时也不会。这里讲讲我在实现第一种办法的过程和遇到的一些问题。
将我们要执行的命令写成脚本,或者可执行程序。
下面是我的脚本 ifconfig_test.sh :
# ! /system/bin/sh
注意: 脚本的第一行必须为 # ! /system/bin/sh ,否则无法执行,通过 dmesg 可以查看到信息内容为cannot execve ./ifconfig_test.sh: Exec format error
也可以采用 C/C++ 编写需要执行的命令或者程序,并在编译 image 的时候编译成可执行程序。
在 init.rc 中注册 service
Android 中的 service 需要在 init.rc 中注册, Init.rc 中定义的 Service 将会被 init 进程创建,这样将可以获得root 权限。当得到相应的通知(通过属性设置)后, init 进程会启动该 service 。
本文中注册的内容如下:
service ifconfig_test /system/etc/ifconfig_test.sh
其中, 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 个字符。
将 Android 应用程序提升为 system 权限
既然应用程序可以通过启动 service 获得 root 权限,那么岂不是很不安全。 Android 考虑到了这点,规定只有 system 权限的应用程序才能设置属性,通知 service 启动。关于提升 system 权限的文章网上已有很多,这里就不再细说,可以参考如下两篇文章:
在应用程序中添加属性设置代码
前面已经提到,对于 Android 来说,应用程序通知 init 启动 service 是通过设置系统属性来完成的,具体为设置 System 系统属性 “ctl.start” 为 “ifconfig_test” ,这样 Android 系统将会帮我们运行 ifconfig_test 这个service 了。
对该系统属性的设置有三种方法,分别对应三种不同的应用程序:
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"))
当编写 NDK 的程序时,可以使用 property_get 和 property_set 这两个 API 来获得和设置属性。使用这两个API 必须要包含头文件 和链接 libcutil 库。
Shell 脚本
Android 提供了命令行 setprop 和 getprop 来设置和获取属性,他们可以在脚本中被使用。
由于我的程序是在 JNI 中调用脚本,脚本中又执行 ifconfig ,因此我将设置属性的部分放在了脚本中完成,代码如下:
setprop ctl.start ifconfig_test
#wait for the service until it stops
while [ $ret -ne 0 ]
getprop | grep "$ENABLE_MAPPER_SRV" | grep stopped
通过上面 4 个步骤, Android 应用程序就获得了 root 权限,更具体的说,是在执行我们需要执行的命令时临时获得了 root 权限。
&&&&推荐文章:
【上篇】【下篇】

我要回帖

更多关于 android root权限 的文章

 

随机推荐