【Android 进阶】临时卸载root和恢复root功能
【前言】为什么有这个需求?
Q:首先,谈谈为啥想要root呢?
A:有root才能有控制权,也才能折腾很多东西,比如:删删流氓软件,用用代理、软件自动安装等;
Q:然后,那么为何又需要删除root呢?
A:有时候有些工具在已经root的机器上是不能执行的啦, 但是这些功能对我们也有很大的吸引力,比如:手机打卡呀 等等牛逼的功能;如果你也想要使用这些功能,同时又想要偶尔root一下的话, 那么恭喜你,可以通过如下的方式来搞定;
一 准备篇
1.1 要已有root权限
至于如何获取root,这是最基本的了,百度一下很多工具都有一键root的功能;此处略过一万字;
1.2 用到的终端工具
推荐使用Better Terminal Emulator Pro,免费又好用;
参考地址如下(百度手机助手搜索一下就行了):
1.3 必备的知识
1.3.1 关于mount
默认启动后的系统分区都是只读的,所以就算你的手机已经root了,通过终端操作的时候,看到的也是只读的,不能修改,那么就需要重新挂载一次,主要是要挂载成可读写,核心脚本如下:
mount -o remount,rw /emmc@android /system
1.3.2 关于可执行权限
简单来说在linux角度一个程序的各种权限是通过权限位来设置的,核心思想是:读权限值为4、写权限值为2、执行权限值为1,需要什么样的权限,那么就设置合适的权限值就行了,比如你要可读可写可执行,那么就是4+2+1=7;
权限分组,linux一个文件权限分了3个部分,分别是: 拥有者的权限 拥有小组的权限 其他人的权限, 三个部分依次用3个8进制的数组和起来,所以一般权限位设置的时候看起来像 777、755 这样子的,就是所有人可读可写可执行 和 拥有者可读可写可执行、拥有该文件的小组的所有人可读可执行、其他人可读可执行;
此处额外设置一下suid和guid,故整个权限位变成了 6755, 前面的6让普通用户执行su的时候感觉是root在执行一样;
chmod /system/xbin/su
详细的可以参考: http://blog.chinaunix.net/uid-26642180-id-3378119.html
也可以搜索一下: suid guid 关键字
二 行动篇
2.1 查看分区情况
打开超级终端,输入mount命令,查看当前是哪个分区挂载到了 /system这个目录,我的系统是挂载了 /emmc@android 到 /system下,参考下图:

如需使用,请输入mount查看您的磁盘分区路径;
2.2 查看需找su路径
一般su所在路径是:
/system/xbin/su
/system/bin/su
后续假设都在通用的 /system/xbin/su 路径下;
2.3 准备写脚本
2.3.1 备份原来的su程序broot.sh
#!/system/bin/sh
/system/xbin/su -c "mount -o remount,rw /emmc@android /system"
/system/xbin/su -c "cp /system/xbin/su /system/su"
/system/xbin/su -c "mount -o remount,ro /emmc@android /system"
这个脚本一般执行一次就可以了,也可以通过Root Explorer来实现备份!
2.3.2 获取root的程序groot.sh
#!/system/bin/sh
/system/su -c "mount -o remount,rw /emmc@android /system"
/system/su -c "cp /system/su /system/xbin/su"
/system/su -c "chmod 6755 /system/xbin/su"
/system/su -c "mount -o remount,ro /emmc@android /system"
实现原理是,利用上面备份好的su,来执行以下几步:
- 重新挂载system分区为可读可写;
- 拷贝备份的su到xbin目录下
- 设置合适的权限;
- 重新挂载分区为只读模式;
2.3.3 删除root的程序droot.sh
特别注意,必须先参考2.3.1的脚本备份su到/system/su目录下,然后才能执行这个程序,不然没了root后果自负哦;
#!/system/bin/sh
/system/su -c "mount -o remount,rw /emmc@android /system"
/system/su -c "mv /system/xbin/su /system/xbin/su.bak"
/system/su -c "mount -o remount,ro /emmc@android /system"
实现原理是,利用上面备份好的su,来执行以下几步:
- 重新挂载system分区为可读可写;
- 将xbin下的su重命名为su.bak;
- 重新挂载分区为只读模式;
三 坐享其成
3.1 下载工具
基本脚本都写好了,到这里来下载吧 :)
http://yunpan.cn/cfwmQui82UXZt (提取码:c7a3)
3.2 执行实例
执行步骤详解如下:
sh broot.sh # 备份su ls -al /system/su # 检查备份结果 sh droot.sh # 删除su,移除root权限,特别要小心!!!保证前面备份成功啊!!! su # 检查是否成功移除,出现not found表示移除成功了; su groot.sh # 恢复su,恢复了root权限,恭喜 :) su # 检查是否恢复成功,执行不报错,前面提示符编程 '#'表示成功; exit # 退出root模式
有图有真相!!!

【测试机型】 红米Note联通版, HM NOTE 1W;
欢迎大家交流 :)
【Android 进阶】临时卸载root和恢复root功能的更多相关文章
- RHEL6和RHEL7恢复root用户密码
一.RHEL6恢复root密码 将系统重启,出现如下界面按上下键选择会停住,并输入e键 选中下图红框选项,再输入e键 再输入1,进入单用户模式 输入b进行启动 修改密码,然后重启 二.RHEL7恢 ...
- 恢复 root 本地无权限 Access denied for user 'root'@'localhost' (using password: NO)
调试远程的时候,覆盖了本地的权限.导致 本地无法登陆系统表. 远程连接上mysql 执行以下命令恢复. 恢复root 本地管理权限 使用空密码 grant all on *.* to roo ...
- [Android Pro] Android 4.1 使用 Accessibility实现免Root自动批量安装功能
reference to : http://www.infoq.com/cn/articles/android-accessibility-installing?utm_campaign=info ...
- android DDMS 连接真机(己ROOT),用file explore看不到data/data文件夹的解决办法
android DDMS 连接真机(己ROOT),用file explore看不到data/data文件夹的解决办法 问题是没有权限,用360手机助手或豌豆荚也是看不见的. 简单的办法是用RE文件管理 ...
- Nexus 5 Android 6.0.1刷机、Root
Nexus 5 Android 6.0.1刷机.Root 2016-01-24 一. 准备 1. 备份通讯录等数据,切记. 2. 准备adb .fastboot.网上搜 ...
- CentOS恢复root口令方法
CentOS6和CentOS7恢复root口令的方法有很大不同 CentOS6: 在引导菜单倒计时界面按任意键,进入grub引导菜单 按e键进入内核引导参数编辑界面 选中kernel项,按e键编辑引导 ...
- RHEL7恢复root密码
RHEL7恢复root密码 首先关闭SELINUX [root@panda ~]# getenforce Disabled 然后重启,按↑↓键,进入如下界面,选择第一项,按下e键进行编辑 在此界面找到 ...
- RHEL6.5、RHEL7.2忘记ROOT密码恢复小结
RHEL6.5忘记root密码恢复步骤 RHEL7.2恢复密码步骤 5.耐心等待重启完成即可实现重置root密码 也可以按如下做法 依次执行chroot /sysroot/,passwd===> ...
- RHEL 6和RHEL 7(CentOS 6和CentOS 7)恢复ROOT密码
RedHat 6恢复Root密码: 1.启动RedHat 6的时候在这个界面按任意键 2.出现如下界面,按 e 3.出现如下界面,选择第二个--kernel,然后再按 e 4.出现如下界面,输入 空格 ...
随机推荐
- 栈的的链式实例LinkStack实现
1.#include <stdio.h>#include <malloc.h>#include "LinkList.h"typedef struct _ta ...
- c# 闭包 小例
class Program { static void fnnn() { string[] k = new string[] { "x", "y", " ...
- java 打包jar文件以在没有安装JDK或JRE的机子上运行
前言: java号称“一次编译,到处运行”,但这有个前提,那就是你的机子上得安装java环境.对于开发人员或其他一些比较懂计算机的人来说这没什么,但是对于一些不懂计算机的人来说这会很麻烦,他们更希望的 ...
- 用Nikto探测一个网站所用到的技术
Nikto是一款开源的(GPL)网页服务器扫描器,它可以对网页服务器进行全面的多种扫描,包含超过3300种有潜在危险的文件/CGIs:超过 625种服务器版本:超过230种特定服务器问题,包括多种有潜 ...
- linux进程调度之 FIFO 和 RR 调度策略
转载 http://blog.chinaunix.net/uid-24774106-id-3379478.html linux进程调度之 FIFO 和 RR 调度策略 2012-10-19 18 ...
- hibernate criteria中Restrictions的用法
方法说明 方法 说明 Restrictions.eq = Restrictions.allEq 利用Map来进行多个等于的限制 Restrictions.gt > Restrictions.ge ...
- C++小思
Bjarne那稀疏的棕褐色头发, 有点红的眼睛, 这个可爱的好老头, 感觉他更应该是一个哲学家, 因为他用编程的语言C++ 揭示了我们这个纷繁复杂世界的本质: 对象. 对的, 世界是由对象组成的, 并 ...
- 织梦系统规律:查看网站是不是用dedecms建的
用dedecms织梦系统建站的童鞋,在遇见很喜欢的网站的时候总想知道人家的网站是用什么做的,怎么知道网站是不是dedecms建的呢?? 第一个方法: 可以直接在需要判断网站织梦版本的的URL路径后面添 ...
- 用LoadRunner实现接口测试
接口测试的两种方法 其实无论用那种测试方法,接口测试的原理是通过测试程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文这一个过 ...
- 利用LineRenderer画出一个圆,类似于lol中的攻击范围
http://www.unity蛮牛.com/blog-5945-1409.html 本人大四狗,学unity半年有余,写此文章纯粹记录自己的心得. 废话不多说,进入主题.... 效果如图: 首先要理 ...