安卓手机root权限获取的工作原理是什么?
首先明白几点
1. su是一个elf可执行文件,superUser是用来和su配合的root授权管理软件。
2. 要执行su(其他程序获取root权限默认执行su)必须将su放在系统环境变量里,bin和xbin目录,其他地方你需要加全路径
3. bin和xbin目录在system分区,默认只读,所以要写入su必须重新挂在该分区为可写
知道这些再说如何root
1. 通过漏洞将自己进程提权到root权限,具体做法要去了解漏洞利用原理
2. 进程获取root权限后重新挂载system分区可读写
3. 然后将su拷贝到bin目录或者xbin目录,由于su的所有者提权进程已经是root进程,所以su也具有root属性。然后设置su文件755属性,即所有者可读可写可执行,所在组和其他用户可读可执行,同时为了让一般用户在执行某些程序的时候,能够暂时具有该程序拥有者的权限,所以需要设置s标志位,即其他评论提到的chmod 4755 su,superuser拷贝system目录并安装,放在system目录下作为系统应用,防用户删除
4. 这样其他程序调用su以后,先要经过superuser同意,用户点同意后,由于su拥有者为root所以其进程也拥有root权限,相应的它执行的命令也都是有root权限, 详细的做法可去github搜su源码阅读,最后执行的一句`execv(ctx->to.shell, ctx->to.argv + argc);`通过验证后将su进程直接替换成需要执行的命令