博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Android 进阶】临时卸载root和恢复root功能
阅读量:6582 次
发布时间:2019-06-24

本文共 2445 字,大约阅读时间需要 8 分钟。

【前言】为什么有这个需求?

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 6755 /system/xbin/su

详细的可以参考: 

也可以搜索一下: 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 下载工具

基本脚本都写好了,到这里来下载吧 :)

(提取码:c7a3)

 

3.2 执行实例

执行步骤详解如下:

sh broot.sh # 备份suls -al /system/su # 检查备份结果sh droot.sh # 删除su,移除root权限,特别要小心!!!保证前面备份成功啊!!!su # 检查是否成功移除,出现not found表示移除成功了;su groot.sh # 恢复su,恢复了root权限,恭喜 :)su # 检查是否恢复成功,执行不报错,前面提示符编程 '#'表示成功;exit # 退出root模式

有图有真相!!!

 

【测试机型】 红米Note联通版, HM NOTE 1W;

欢迎大家交流 :)

转载于:https://www.cnblogs.com/QuLory/p/4152349.html

你可能感兴趣的文章
浅谈Java中的对象和引用
查看>>
SQL 注入自我总结
查看>>
Linux线程
查看>>
Exchange Server 2013 系列八:邮箱服务器角色DAG实战
查看>>
一个有趣的命令
查看>>
我的友情链接
查看>>
已发布13集网站开发技术视频:http://blog.sina.com.cn/s/blog_67d27f340102vf7l.html
查看>>
Mysql ibdata 丢失或损坏如何通过frm&ibd 恢复数据
查看>>
MySQL数据库的优化(二)
查看>>
Deepin OS和WIN7双启动 花屏原因一例
查看>>
UIMenuController—为UITextField禁用UIMenuController功能
查看>>
Protobuf使用不当导致的程序内存上涨问题
查看>>
【原创】扯淡的Centos systemd与Docker冲突问题
查看>>
Spring+Mybatis多数据库的配置
查看>>
给大家推荐一个免费下载名称读写ntfs软件的地方
查看>>
在MySQL数据库建立多对多的数据表关系
查看>>
突然停电或死机导致没保存的文件怎么找回
查看>>
kudu
查看>>
jquery.validate.min.js表单验证使用
查看>>
在JS中捕获console.log的输出
查看>>