Linux(Android)系统Root实现原理

Linux(Android)系统Root实现原理


DATE: 2017-09-01 15:45:10

root原理

原理概述

  1. 系统漏洞方案

主旨思想是查找系统漏洞,让本身具有root权限的进程执行打开root权限的操作。

  1. 重烧eng boot.img方案

Android版本有user版本和eng版本的区别,其中eng版本可以用于开发调试,所以本身可以开启root权限。通过重烧eng boot.img版本来获取root权限。这个原理理解起来很简单,原理章节不再详述。

死锁问题
root需要考虑两个问题:

  1. root权限的获取;
  2. root 权限的使用管理。

对应这两个问题,需要两个程序来解决:

  1. su 负责获取root权限;
  2. SuperUser.apk负责对root权限进行授权管理。

有了这两个程序之后,将su拷贝到Android手机底层命令的执行目录(/system/bin)下并赋予执行权限,执行即可成功获得root权限。

但是这里有一个问题,拷贝到系统目录下的操作,和在系统目录下更改权限的操作,只有root权限才可以做这个操作。这就是一个死锁。

解决方法
对于3.2.2中提到的死锁问题,解决办法就是通过其它方式拷贝执行su来打破这个死锁。经过前人不断的积累探索,想到了一个方法,可以让本身具有root权限的进程来做这件事情。
但是系统本身的进程是不能被非root的用户操作的,所以我们只能采用非常规的方法:找系统漏洞。

这里引用网络上某位不知名前辈的一段话:

“Root 漏洞不是与生俱来的,这是全世界优秀的计算机黑客不懈努力的成果。也许那个你在夜店喝酒的夜晚,他们正寻找着系统的漏洞,一次次的测试,一次次的失败,最终在你醉得不省人事的时候,他们获取到了系统的最高控制权。他们欢呼,他们嚎叫,他们是全天下是聪明的人!”

经过牛人们的不懈探索,从而找到了我们需要的漏洞,拷贝和SuperUser.apk,并执行su。这样,我们就获得了root权限。

版权声明

弈心博客


本文首发site_name,转载请附上博文链接!