首页 > 代码库 > 360一键root su浅析

360一键root su浅析

今天有同事来问我为嘛360的su权限是755。

以前还真没注意这个细节,看了下自己手机里用360root的su,果真如此。

技术分享

技术分享

既然没有SUID或者SGID权限,那又是怎么访问root用户下的东西呢。


于是花了点时间研究了一下,360此举主要是为了规避4.4以后android系统的selinux机制。


它的主要步骤如下:

1. 修改install-recovery.sh

技术分享技术分享

这个文件的内容被360改成了/system/bin/su --daemon &


2. install-recovery.sh的执行是在init阶段,此时不受selinux的影响。

技术分享技术分享


3. init阶段

技术分享技术分享

......

技术分享

判断启动参数,如果是--daemon,就把进程名改成permmgrd。

技术分享


4. ps查看下permmgrd进程,其实permmgrd就是su的符号链接。

技术分享技术分享


5. c/s架构

于是乎,就大致明白了360的su的总体组成了。

(1). init阶段启动起来的permmgrd进程具有完全的root权限,理论上是不受selinux限制的。

(2). 用户执行su之后,执行的操作,很有可能是permmgrd进程帮忙执行的。


360一键root su浅析