关于Android通过su申请root的补充

来源:互联网 发布:aris 7.1 软件下载 编辑:程序博客网 时间:2024/06/06 17:02

  1. 1 linux 两个uid:真实uid和有效uid.
    A:real uid:通过getuid()获取,描述用户是谁。
    B:effective uid:通过geteuid()获取,指程序执行时的用户组别,用于判断程序是否有权去进行一些操作。
    C:一个程序启动另一个程序,后者的real uid等于parent的real uid,而effective uid通常会继承于parent启动者real uid,但是下面的情况不会。
  2. 2 su的4577权限,也就是设置了suid,sgid权限,这样让su运行时的euid不继承于它的启动者real uid,而是直接来只有文件属主root.而euid才是真正权限的判断,所有在后面su就可以做root的事:
    A:把自己的real uid 也设置为root。
    B:调用sh执行命令,这是sh的real uid来至于su,也就是root。
  3. 3 在2.2系统中,su在把自己的real uid 也设置为root之前,做了判断:
    myuid = getuid();    if (myuid != AID_ROOT && myuid != AID_SHELL) {        fprintf(stderr,"su: uid %d not allowed to su\n", myuid);        return 1;    }
  4. 所以,在android原生系统中,如果启动su的不是root或者shell,那么就不能通过su root,只能在recovery模式下升级系统,刷入新编译的su。而在某些自有尝试的手机中,如hike
    等系统中已经没有那一步的判断,才可以通过su获取root 

原创粉丝点击