自己写的android root权限应用怎样获取root权限

4488人阅读
android(34)
博客分类:
在项目的过程中,有可能会要实现类&#优化大师、安卓优化大师的软件搬家、静默安装等需要root权限的功能,或者类似SET_PREFERRED_APPLICATIONS、MOVE_PACKAGE 等需要系统的权限,必须要有系统签名。
咱们拿 软件搬家 来当例子(通过获取系统权限,而不是弹出系统的应用管理界面来搬家):
实现方式:
1、想办法获取系统权限,但是这个一般办不到,因为不同厂家出厂的手机系统签名都不一样
可以看看我很早的时候提的问题:
2、在已经root过得手机,获取root权限(有root权限就可以为所欲为啦,嘿嘿)
第一种办法暂时不考虑,想了解的童鞋可以google android如何获取系统权限。
我们说说第二种办法,
在已经root过得手机上获取root权限,简单
Process process = Runtime.getRuntime().exec(&su&);
Process process = Runtime.getRuntime().exec(&su&);
执行这一句,superuser.apk就会弹出授权对话框。
但是这样做就可以了吗.....肯定没这么简单啦!
当执行需要系统权限的操作时,系统还是回去检查应用程序是否拥有该权限。
所以我们要想办法绕过过系统检查权限这道关卡!
至于办法 可以参考下以下两篇博客:
大概思路是:
通过app_process 命令启动java程序(想了解app_process更多资料,请自行google),
可是app_process 命令需要root权限才能执行,所以要配合上面所讲的su命令啦。
这么做是可以实现绕过系统检查权限的大门,
但是每次执行的时候都要先请求下root权限(那种弹框和toast会让用户感觉到很不安)
不要忘了咱们的标题:Android应用程序永久获取root权限方法。
永久获取root权限,就是获取过一次root权限后,以后再也不需要去请求root权限
实际上,像一些软件管家:安卓优化大师、360优化大师,都是这么做的
(不信你可以试试其软件搬家功能,即使你的手机解除root,它们还是具有root权限)
原理可以看下以下链接:
(下载该文章需要money,明天我再上传该文档,一时找不到了.......)
大概思路:
自己编译一个类似su的可执行程序(以下以main为代号),在main中调用app_process命令,
然后在第一次获取root权限的时候将其push到/system/bin/目录下,再chmod 4755 可执行程序,
修改其访问权限,使执行该命令的进程能够暂时获得root权限
(4755 也请google下吧 linux文件权限)。
以后咱们要是需要root权限的话就调用mian命令,不用去调用su来请求root权限啦
至于为什么要这么做:也是为了让root授权的对话框和toast不在显示
插一句,想要知道su和superuser.apk的关系,请点开下面的链接
综上:我们所做的就是绕过su命令,用我们自己编写的可执行程序main开实现su的功能。
自己编译可执行程序main的时候,需要注意一点,请参考su源码,
我在这一步就卡了很久,
大概意思:
main的uid是继承的父类的uid,而且它有root权限,但是在main中执行system(cmd),
(这里的cmd 调用app_process 来启动实现了软件搬家的java程序),
假如system()是通过sh 命令来实现,但在main中开启的sh的uid也是继承main的uid,
也就是应用程序的uid,但是这个uid并没有权限执行相关root命令;
所以需要先将main的uid设置为root,为了使sh的uid也为root,从而使sh 能够执行
需要root权限的app_process命令
关键代码在你的main 方法中加入
int uid = 0;
int gid = 0;
if(setgid(gid) || setuid(uid))
return permissionDenied();
int uid = 0;
int gid = 0;
if(setgid(gid) || setuid(uid))
return permissionDenied();
可以参考su的源码 (su的源码会在我上传的压缩包中)
大概思路就是这样。
在我上传的压缩包中有我自己写的demo,实现的是软件搬家的功能,
操作很简单:
1、安装Movepkgdemo.apk,并执行
2、点击 install com.zl.hw 按钮 来 安装一个helloword android程序,
3、点击 get root 按钮,来第一次获取root权限,
4、点击第三个按钮,来移动helloword程序
1、编译可执行程序main(注意main只是个代号,在Movepkgdemo中 是 放在Movepkgdemo项目的 /res/ raw/ 目录下的zlsu文件)
2、将main.c文件成可执行文件会需要linux编译环境,你可以自己在linux上编译,也可以在windows下来编译
windows方法:使用cygwin 来进行NDK开发(搭建该环境可能需要话费比较多时间,主要是要下载cygwin)
cygwin环境配置文档也在上传的压缩包中,虽说花了打功夫,但是搭建好NDK环境,以后也能方便咱做NDK开发。
NDK环境搭建需要cygwin在安装的时候安装必需的一些项目(请查看以下链接):
最后总结一下总体思路:
1、在java代码中实现需要root权限的功能,并提供一个包含入口函数main的类
2、通过app_process命令来启动1中的java模块,但是app_process需要root权限,所以看第3步
3、通过在第一次获取root权限的时候,向/system/bin/注入自写的类似su的二进制可执行程序
main,并且和su的访问权限也一样(chmod 4755)(main功能和su一样,唯一不一样就是去除了su中与superuser.apk 交互的代码),即main命令执行app_process命令,这样可以做到:
一旦拥有root权限,以后再也不需要去请求root权限
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:98663次
积分:1287
积分:1287
排名:千里之外
原创:25篇
转载:29篇
评论:17条
(1)(2)(1)(1)(1)(3)(2)(1)(1)(1)(3)(2)(1)(1)(1)(3)(1)(4)(3)(2)(3)(6)(6)(5)Android root权限获取大揭秘
Android root权限获取大揭秘,Android root权限获取的教程有很多,为了让大家更进一步的了解root的奥秘所在,爱玩手机网特为您奉献本文,希望对您有所帮助。
Android的应用程序入口肯定是Java程序。应用程序的启动者是由系统临时根据Androidmanifest.xml中定义的权限而创建的临时用户。而不像linux那样是使用登陆者的身份启动,从而使得进程具有登陆者的所有权限。这也是Android的安全机制之一。
新的权限机制也带来新的问题,Android给应用程序的权限是按功能来分,java虽然可以访问文件系统。但由于应用程序本身是临时用户启动,这个临时用户权限十分有限。因此诞生了&越狱/root机器&这样的产物。
其实root机器不是真正能让你的应用程序具有root权限。它原理就跟linux下的像sudo这样的命令。在系统的bin目录下放个su程序并属主是root并有suid权限。则通过su执行的命令都具有Android root权限。
Su的源代码网上也有,有兴趣的同学去google下。
当然使用临时用户权限想把su拷贝的/system/bin目录并改属性并不是一件容易的事情。这里用到2个工具跟2个命令。工具就是busybox。不熟悉的同学可以去网上google下。这个太有名了我就不多说了。
把busybox拷贝到你有权限访问的目录然后给他赋予4755权限,你就可以用它做很多事了。
当然busybox只能不能提升权限,真正提升权限的是ratc这个程序,这个程序中一键root包里面可以找到,作用是rooting在adb的shell。
网上介绍Ratc的文章不多,它是rage against the cage 的缩写。是真正的提升权限的破解程序。虽然我没看过源代码,但估计是利用adb源代码部分内容来实现的,原理估计跟模拟器使用adb shell登陆可以获得root shell差不多。(因为它运行需要adb连接才会成功)。
使用busybox前先运行ratc,这样运行busybox的UID将是0,也就是root。
首先把system目录改成可读性的:busybox mount -o remount,rw /system,
当然你还不能改下面的文件,因为system下文件的所有者都不是你。
但你可以偷梁换柱把system下的目录给换掉。
使用命令Busybox mount -t tmpfs none /system/xbin,呵呵这下xbin目录你随便写了。
将su跟busybox弄过去cp /data/data/xxx/su /system/xbin。然后赋权限chmod 4755 /system/xbin/su。
然后使目录生效busybox --install -s /system/xbin,
别忘善后busybox mount -o remount,ro /system去掉system可写。
这样只是临时的,只能用su跟busybox能执行一些原来系统没有权限执行的命令而已。当系统重启后/system/xbin又变为原来的文件。真正要改系统的话需要自己写内核代码(相当于windows的驱动程序)。内核文件拥有所有权限。使用busybox命令insmod /data/data/xxx/xxx.ko装载内核文件,你想干嘛就可以干嘛了。
当然我们不是搞破解的没必要去改别人的机器,我们只是想让自己应用程序具有root权限而已。所以临时的su就可以了。我们用c++写一个可执行文件。使用socket可以跟java的程序通讯。然后将需要使用root权限才能执行的代码放在c++程序里,然后java程序中创建新的su进程,将c++程序带全路径作为参数1。启动后就可以通过socket调用c++函数去执行你想干的事了。
最后程序执行完了别忘了善后busybox umount /system/xbin。
最后说说要注意的事情,如果机器已经拥有Android root权限的话就不需要做这些事情了,但root过的机器都有装有个权限管理的程序。会弹出对话框。但这个程序管理能力有限,如果不想让他弹出的话。也许可以通过改su文件名来解决。有兴趣的同学不妨试试。
root是Android系统中一个超级管理员权限, 获得此权限后,用户们就可以使用各种需要Android root权限的软件,修改系统文件个性化手机等等。
但是为了手机的安全性和稳定性,防止用户误操作导致系统崩溃,系统默认是没有开启root权限的,这就需要我们来进行获取。取得root就是取得android手机的最高控制权,很类似symbian上的xx(破解)。
Root后也有一些问题,例如root后会失去保修(下面有办法弥补), 无法使用系统中的官方升级(但可以通过下载刷机包升级)
虽然获取root有一定的弊端,但对于android而言,利大于弊,还是有很多好处的,能丰富你的手机功能,使它更强大。
说到获取root权限,很多朋友都会觉得太高级了,这个要怎么做啊?其实Root并没有传说中的那么麻烦,因为有一款一键获取root权限的软件,它已经能支持很多手机型号一键获取root。
如何获取root
在获取Android root权限前,我们要下载一个一键root软件&&Universal Androot。
在下载安装后运行该软件,进入软件后看到如下的界面;
Universal Androot操作界面
先要选则系统的版本,根据系统版本来选择是1.5/1.6,还是2.0/2.1,然后按下Go Root按钮,稍事等待即可Root成功;
这里还有个undo root 就是弥补方法 要升级 要送去保修 按下undo root就行了(superuser也会被卸掉)不过在此之前,请将对系统的改动复原,比如替换了字体,修改了系统声音,都要改回来。
获取Android Root权限后的使用
获取了root后,会发现安装了一个名为superuser的软件,这是一个权限管理工具,任何程序想要获取root权限,都会被superuser拦截并提示用户是否允许程序获取root权限;
Superuser request
只有用户选择allow(允许) 那个程序才能获取到root权限,并使用需要root权限的功能。
所以我们发现root并没不会有什么危险性,需要root权限时都要经过我们的确认,不了解的程序如果需要获取root权限,用户可以选择Deny (禁止),这样就不会有任何不良后果,也不会受到恶意程序攻击了。
获取Android Root权限后能做什么
最后我们再来看看获取了root权限后我们都能做些什么:
1、装root explorer文件管理器,这样全部的系统文件都能进行访问修改了;
2、用setcpu修改cpu频率,其实主要是来降低频率而不是超频,为的是省电和减少发热,使用时稍微谨慎一点;
3、对于乐phone用户,可以关闭部分推送服务;
可以把pushmusicwidget,pushvideowidget,sinanewswidget,stocker这几个推送去掉,这几个文件在/system/App中,对应的功能就是音乐,视频,新浪新闻,股票这几个推送,删掉哪个文件就去掉那个推送服务。如果只是从机器里软件管理中卸载了,它们还会在后台偷偷的下载,浪费流量和电池电量。去掉以后就可以避免这些问题了。
4、可以修改开机画面;
5、可以修改开机铃声;
系统声音在\system\media\audio\ui下面,boot.MP3就是开机声音,自己换一个喜欢的,好像有赫兹的限制,不要太高;
6、去除快门声音,文件在\system\media\audio\ui下面,删掉camera_click.ogg即可;
7、去广告adfree其实就是改host表,在\system\etc下;
8、GPS调优
\system\etc下gps.conf
NTP_SERVER=XXXXXXXXX
XTRA_SERVER_1=http://xtra1.gpsonextra.net/xtra.bin
XTRA_SERVER_2=http://xtra2.gpsonextra.net/xtra.bin
XTRA_SERVER_3=http://xtra3.gpsonextra.net/xtra.bin
NTP_.pool.ntp.org
XTRA_SERVER_1=http://xtra1.gpsonextra.net/xtra.bin
XTRA_SERVER_2=http://xtra2.gpsonextra.net/xtra.bin
XTRA_SERVER_3=http://xtra3.gpsonextra.net/xtra.bin
SUPL/CP Settings :
Server: 改为
(注意前面]有www.)
Server Port: 改为 7276
9、手机重启(好多软件都有该功能,要使用的话就需要root权限)
10、更换系统字体,个性化系统声音。(需要替换系统文件)
其实还有很多能做的事情,这里就不一一举例了,大家在网上能搜到很多关于root的教程和文章,也有很多实用的软件需要Android root权限的支持,这些都能对您的手机起到增强作用。还没有获取Android root权限的朋友,按照上面说的试一下,让你的手机变得更有乐趣吧!
标签(Tag):
------分隔线----------------------------
------分隔线----------------------------安卓手机如何Root 安卓手机Root权限获取图为教程_手机技巧_百事网(原电脑百事网) - 专业的手机电脑知识平台
百事网(原电脑百事网),专业的手机电脑知识平台!
当前位置: &
安卓手机如何Root 安卓手机Root权限获取图为教程
编辑:admin
手机中的很多预装软件是厂商和运营商捆绑附加的,有些软件占地方,设置还有些软件我们稀里糊涂的就被扣费了。但是,你的手机如果没有root就是删不掉。网上有很多关于如何root的方法,有些太过复杂,我觉得还是用计算机版本的360手机助手root比较简单。
小白思考篇:?
ROOT具体方法:
1、使用USB数据线将手机与电脑连接起来。我们选择&USB调试&,其它的手机可以通过&设置&-&版本&-&开发者&中找到这项,一般都会在设置里。不过,你就算没有找&USB调试&也没有关系,后面的软件会有相关的说明和自我寻找。如第八步中,点击&如何打开&usb调试模式&&,里面还有详细的说明。
&2、 在电脑上,打开360安全卫士,找到360手机助手,点击&立即连接&。如果你的电脑没有安装360手机助手,它自动安装,手机也是一样的。当然,如果你不需要,我们ROOT后,可以进行卸载。如下图。
3、下载并安装手机版360手机助手,也需要点时间。如果你觉得没有需要的话,可以root成功后在手机上卸载。
4、如果之前已经下载了,系统如下图。
5、画面会显示,让你查毒,为了更安全,建议你查毒。
本月排行本周排行全部排行本文主要介绍程序如何利用root权限静默安装APK,如何自动选择普通安装还是静默安装以及扩展PackageUtils实现静默删除APK。
推荐一个用了两年的理财产品
我维护的Android经验分享的公众号&40篇
站内推荐文章
阿里、滴滴内推(20k-40k)*16月+
交流讨论区
平安集团 8% 理财产品
那些著名开源库的原理分析
翻.墙.—几十块钱换来大世界
(116,814)(75,415)(73,872)(69,544)(65,504)(60,945)(57,289)(54,119)(53,170)(52,715)
推荐一个用了两年的理财产品
我维护的Android经验分享的公众号&30篇
平安集团 8% 理财产品}

我要回帖

更多关于 android root权限 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信