手机获取root权限后可以恢复怎么解除root权限吗

手机获取root后再解除root还对手机有危害吗? - 知乎有问题,上知乎。知乎作为中文互联网最大的知识分享平台,以「知识连接一切」为愿景,致力于构建一个人人都可以便捷接入的知识分享网络,让人们便捷地与世界分享知识、经验和见解,发现更大的世界。4被浏览670分享邀请回答0添加评论分享收藏感谢收起0添加评论分享收藏感谢收起写回答博客分类:
在项目的过程中,有可能会要实现类似360优化大师、安卓优化大师的软件搬家、静默安装等需要root权限的功能,或者类似SET_PREFERRED_APPLICATIONS、MOVE_PACKAGE 等需要系统的权限,必须要有系统签名。
咱们拿 软件搬家 来当例子(通过获取系统权限,而不是弹出系统的应用管理界面来搬家):
实现方式:
1、想办法获取系统权限,但是这个一般办不到,因为不同厂家出厂的手机系统签名都不一样
可以看看我很早的时候提的问题:
2、在已经root过得手机,获取root权限(有root权限就可以为所欲为啦,嘿嘿)
第一种办法暂时不考虑,想了解的童鞋可以google android如何获取系统权限。
我们说说第二种办法,
在已经root过得手机上获取root权限,简单
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();
可以参考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权限
下载次数: 1917
下载次数: 1583
浏览 83203
楼主您好,这篇写的很好,对我很有帮助,但是在测试的时候发现,一般的复制粘贴重启等操作都可以,就是用pm命令禁用掉系统的某些服务时,不好使,请问这样情况您遇到了吗?exeCmd(new String[]{Constants.ROOT_SU,"-c", String.format("pm disable '%s/%s'", receiverName.getPackageName(), receiverName.getClassName())},"");先确定该命令在shell模式下能否成功调用
Description Resource Path Location TypeConversion to Dalvik format failed with error 1 Movepkgdemo
Unknown Android Packaging Problem伟大的博主,我通过ADT试图运行你这个demo,得到入上错误,请问这是为什么?更多的信息[ 21:58:36 - hw] Unable to resolve target 'android-17'[ 21:58:37 - Movepkgdemo] Unable to resolve target 'android-17'[ 21:58:37 - Superuser] Project has no project.properties file! Edit the project properties to set one.[ 21:58:38 - Movepkgdemo] Unable to resolve target 'android-17'[ 21:58:38 - hw] Unable to resolve target 'android-17'[ 22:18:03 - Movepkgdemo] Dx trouble processing "java/lang/UnsafeByteSequence.class":Ill-advised or mistaken usage of a core class (java.* or javax.*)when not building a core library.This is often due to inadvertently including a core library filein your application's project, when using an IDE (such asEclipse). If you are sure you're not intentionally defining acore class, then this is the most likely explanation of what'sgoing on.However, you might actually be trying to define a class in a corenamespace, the source of which you may have taken, for example,from a non-Android virtual machine project. This will mostassuredly not work. At a minimum, it jeopardizes thecompatibility of your app with future versions of the platform.It is also often of questionable legality.If you really intend to build a core library -- which is onlyappropriate as part of creating a full virtual machinedistribution, as opposed to compiling an application -- then usethe "--core-library" option to suppress this error message.If you go ahead and use "--core-library" but are in factbuilding an application, then be forewarned that your applicationwill still fail to build or run, at some point. Please beprepared for angry customers who find, for example, that yourapplication ceases to function once they upgrade their operatingsystem. You will be to blame for this problem.If you are legitimately using some code that happens to be in acore package, then the easiest safe alternative you have is torepackage that code. That is, move the classes in question intoyour own package namespace. This means that they will never be inconflict with core system classes. JarJar is a tool that may helpyou in this endeavor. If you find that you cannot do this, thenthat is an indication that the path you are on will ultimatelylead to pain, suffering, grief, and lamentation.[ 22:18:03 - Movepkgdemo] Dx 1 aborting[ 22:18:03 - Movepkgdemo] Conversion to Dalvik format failed with error 1[ 22:22:08 - Movepkgdemo] Dx trouble processing "java/lang/UnsafeByteSequence.class":Ill-advised or mistaken usage of a core class (java.* or javax.*)when not building a core library.This is often due to inadvertently including a core library filein your application's project, when using an IDE (such asEclipse). If you are sure you're not intentionally defining acore class, then this is the most likely explanation of what'sgoing on.However, you might actually be trying to define a class in a corenamespace, the source of which you may have taken, for example,from a non-Android virtual machine project. This will mostassuredly not work. At a minimum, it jeopardizes thecompatibility of your app with future versions of the platform.It is also often of questionable legality.If you really intend to build a core library -- which is onlyappropriate as part of creating a full virtual machinedistribution, as opposed to compiling an application -- then usethe "--core-library" option to suppress this error message.If you go ahead and use "--core-library" but are in factbuilding an application, then be forewarned that your applicationwill still fail to build or run, at some point. Please beprepared for angry customers who find, for example, that yourapplication ceases to function once they upgrade their operatingsystem. You will be to blame for this problem.If you are legitimately using some code that happens to be in acore package, then the easiest safe alternative you have is torepackage that code. That is, move the classes in question intoyour own package namespace. This means that they will never be inconflict with core system classes. JarJar is a tool that may helpyou in this endeavor. If you find that you cannot do this, thenthat is an indication that the path you are on will ultimatelylead to pain, suffering, grief, and lamentation.[ 22:22:08 - Movepkgdemo] Dx 1 aborting[ 22:22:08 - Movepkgdemo] Conversion to Dalvik format failed with error 1
麻烦问一下,你编译好的zlsu文件应该可以直接用吧? 没看懂你这个命令:"movedemo -c 'export CLASSPATH="
+ classpath
+ " && export LD_LIBRARY_PATH=/vendor/lib:/system/lib && exec app_process /data/app "
+ minePkgName + "/MoveUtil " // /system/bin
+ pkgName + " " + moveFlag + "'"关机命令应该怎么执行呢reboot 重启reboot -p 关机
PackageManager.MOVE_SUCCEEDED导入工程的时候如下提示MOVE_SUCCEEDED cannot be resolved or is not a field让用别的代替 MOVE_SUCCEEDED, layoutlib.jar已经放到libs了,4.2的工程因为,layoutlib.jar和你工程中本身的android.jar都保护PackageManager这个类,你还需要 设置编译时jar包的优先级,吧layoutlib.jar的优先级设为必android.jar高,不然编译时找的是android.jar的packageManager类,当然就编译不过咯设置优先级:java Build Path -- Order and Export 位置靠顶 优先级越高
& 上一页 1
浏览: 351222 次
来自: 深圳
亲,这不是纳秒时间的隐患,是作者用错了地方。
楼主,我是用System.currentTimeMillis( ...
楼主,能把那个zlsu的源码发份给我吗
hi,楼主,这里有个疑问:向上面情况,如果被360安全大师,或 ...
请问该如何解决呢?
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'手机ROOT后怎么还原 如何删除ROOT权限_百度经验
&&&&&&&&&考试手机ROOT后怎么还原 如何删除ROOT权限听语音1234567
百度经验:jingyan.baidu.com手机ROOT后怎么还原呢?由于ROOT手机会带来系统的安全风险,因此我们有必要删除手机ROOT权限。以下就是删除手机ROOT权限的具体方法。百度经验:jingyan.baidu.com1删除手机ROOT权限最直接有效的方法,就是升级系统。因为每次系统更新后手机将自动还原到未ROOT状态。因此更新系统将还原ROOT。2恢复出厂设置也会重置ROOT状态:直接进入手机”设置“-“重置手机”界面,点击“重置手机”或“恢复出厂设置”按钮即可恢复手机ROOT状态。3当然,还有一种更有效、更彻底还原ROOT权限的方法,就是刷机。通过给手机刷机,通常选择官方固件刷机包,即可自动还原手机ROOT状态。4我们还可以通过Recovery界面还原ROOT状态:完全关闭手机后,长按“音量-”和“电源键”不放,即可进入Recovery界面,选择“清除用户数据”项即可还原手机ROOT状态。5当然,我们还可以借助第三方手机ROOT管理工具来实现:如图所示,打开手机USB调试开关,并与电脑进行连接。6待手机被成功识别后,点击“移除ROOT”按钮,并在弹出的窗口中点击“确定”按钮即可自动删除手机ROOT。END经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。投票(8)已投票(8)有得(0)我有疑问(0)◆◆说说为什么给这篇经验投票吧!我为什么投票...你还可以输入500字◆◆只有签约作者及以上等级才可发有得&你还可以输入1000字◆◆如对这篇经验有疑问,可反馈给作者,经验作者会尽力为您解决!你还可以输入500字相关经验00000热门杂志第1期作文书写技巧946次分享第12期祝你好“孕”493次分享第1期当我们有了孩子340次分享第1期新学期 新气象169次分享第1期孕妇饮食指导568次分享◆请扫描分享到朋友圈华为荣耀root后怎么还原 怎么移除手机ROOT权限_百度经验
&&&&&&&&&考试华为荣耀root后怎么还原 怎么移除手机ROOT权限听语音1234567
百度经验:jingyan.baidu.com手机ROOT后如何恢复呢?怎么还原手机ROOT呢?虽然获取手机ROOT后可以实现手机性能的充分发挥,但同时会造成手机系统稳定性的下降。对此如非必要,建议还原手机ROOT权限,以保持稳定的手机系统。百度经验:jingyan.baidu.com1对于已经成功获取ROOT权限的华为手机,我们可以通过以下方法还原ROOT权限。首先下拉通知栏,找到“设置”按钮进入。2在“设置”界面中,切换到“全部设置”选项卡,点击“关于手机”项进入华为手机详细信息界面。3打开“关于手机”界面,从中找到“版本号”项并连续点击直到提示出现“已成功进入开发者选项”时为止。4接下来再次返回“设置”-“全部设置”选项卡,就可以找到“开发者选项”项,如图所示,点击进入其界面。5在“开发者选项”界面中,找到“USB调试”项并点击右侧的开关即可开启“USB调试”功能。如图所示:6接下来将华为手机与电脑进行连接,并在华为官方网站下载华为手机驱动程序,以确保手机驱动程序的正常安装。7最后我们需要在百度中搜索下载相关ROOT工具,利用ROOT工具可以实现手机ROOT权限的还原操作。如图所示,点击“移除ROOT”按钮,并按提示进行操作即可实现还原ROOT操作。END经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。投票(3)已投票(3)有得(0)我有疑问(0)◆◆说说为什么给这篇经验投票吧!我为什么投票...你还可以输入500字◆◆只有签约作者及以上等级才可发有得&你还可以输入1000字◆◆如对这篇经验有疑问,可反馈给作者,经验作者会尽力为您解决!你还可以输入500字相关经验00100热门杂志第1期作文书写技巧946次分享第12期祝你好“孕”493次分享第1期当我们有了孩子340次分享第1期新学期 新气象169次分享第1期孕妇饮食指导568次分享◆请扫描分享到朋友圈简单一招,教你如何手机root后继续保修
我的图书馆
简单一招,教你如何手机root后继续保修
什么是root?root手机还能保修吗?简单一招,教你如何手机root后继续保修!root权限可以跟我们在windows系统下的administrator(超级管理员用户帐户)权限理解成一个概念 。root是android系统中的超级管理员用户帐户,该帐户拥有整个系统最高权利,可以在系统中进行任何操作。为了防止软件更改系统文件,android系统隐藏了root权限,但是,我们平时修改一些系统文件,或是某些软件的操作都会用到Root权限,我们的android手机刷机安装系统时,也是需要有Root权限的,当获取并开启root权限后,我们就可以随意进行任何操作了。相信很多网友都有了解过手机root之后的好处,诸如删除预装软件、禁止软件自启、使用一些特殊功能,比如修改内存数据、系统字体等。对于手机厂商而言,一般情况下是不允许用户进行root的,除了担心用户root后随意删除系统文件造成功能异常,最大的担忧其实是不希望用户将手机厂商预装的第三方推广应用删除掉。这些预装的软件对于手机厂商而言也是收入的一部分,以预装单价1~2元计算,平均一部手机预装5个应用,一旦出货量达到一定的量级,可想而知这背后的利润有多惊人!因此,为什么普遍手机root后不予保修,综上所述就是原因之一。所谓上有政策,下有对策,如果你在担心root后不予保修而止步不前,那么root大师独创的“解除root”功能则可以消除你的顾虑。只要是ROOT大师支持的机型,用户成功root后都可以进行解除,完成解除后手机将恢复至root前的状态,让用户继续享受保修的权益。值得一提的是,利用ROOT大师获得root后手机上会生成一个“授权管理”的应用,通过这个应用用户可以针对自启应用设置关闭,从而让手机运存空间时刻保持畅通。另外,大师温馨提示:手机root后不要随意删除系统应用,比如系统自带的手电筒、相册、相机等,避免因为误删而造成系统功能异常。ROOT大师(手机版)下载地址:微信ID:shuajidashi长按左侧二维码关注点击下方“阅读原文”查看更多资讯↓↓↓
[转]&[转]&[转]&
喜欢该文的人也喜欢

我要回帖

更多关于 如何解除root权限 的文章

 

随机推荐