在说明这个过程之前,先介绍Android的一个安全机制,这个机制是我们Root机器的根源。
Android的应用程序入口肯定是Java程序。应用程序的启动者是由系统临时根据Androidmanifest.xml中定义的权限而创建的临时用户,而不像linux那样是使用登陆者的身份启动,从而使得进程具有登陆者的所有权限。这个临时用户的权限十分有限,因此就诞生了ROOT。
下面以SuperOneClick为例介绍这个过程。
只提目录中的三个重要文件 1. rageagainstthecage 2. su 3. Superuser.apk
步骤一 运行 rageagainstthecage
Android的应用程序入口肯定是Java程序。应用程序的启动者是由系统临时根据Androidmanifest.xml中定义的权限而创建的临时用户,而不像linux那样是使用登陆者的身份启动,从而使得进程具有登陆者的所有权限。这个临时用户的权限十分有限,因此就诞生了ROOT。
下面以SuperOneClick为例介绍这个过程。
只提目录中的三个重要文件 1. rageagainstthecage 2. su 3. Superuser.apk
步骤一 运行 rageagainstthecage
1) 将文件放在/data/local/tmp下,其他目录无法执行。命令如下:
F:/Own/Phone/Samsung/Tools/SuperOneClick>adb push rageagainstthecage /data/local/tmp
F:/Own/Phone/Samsung/Tools/SuperOneClick>adb push rageagainstthecage /data/local/tmp
2) 使用adb shell,修改rageagainstthecage文件权限
F:/Own/Phone/Samsung/Tools/SuperOneClick>adb shell
$ cd /data/local/tmp
cd /data/local/tmp
$ chmod 777 rageagainstthecage
F:/Own/Phone/Samsung/Tools/SuperOneClick>adb shell
$ cd /data/local/tmp
cd /data/local/tmp
$ chmod 777 rageagainstthecage
3) 使用adb shell,运行rageagainstthecage
$ ./rageagainstthecage
$ ./rageagainstthecage
执行此步骤后再次使用adb shell,会发现提示符为#,已经在电脑Shell上获取了Root权限
步骤二 将/system修改为可读写,把su复制到/system/bin/
1)上步骤一成功出现的#号提示符下,修改/system
# mount -o remount rw /system
#
# mount -o remount rw /system
#
2)另开一个命令行窗口,复制su至/system/bin
F:/Own/Phone/Samsung/Tools/SuperOneClick>adb push su /system/bin
F:/Own/Phone/Samsung/Tools/SuperOneClick>adb push su /system/bin
su这个文件的功能,便是实现:普通用户至root超级用户的权限切换!
步骤三:将授权管理的标准Android软件包(Superuser.apk)复制到手机并安装
这个过程很简单,不再赘述,就是adb push与adb install。授权管理其实
就是管理哪些程序能够使用su。也就意味着对超级用户权限的使用进行管理。
就是管理哪些程序能够使用su。也就意味着对超级用户权限的使用进行管理。
总结一下上述过程
在提取Root权限过程中,只有两个重要的文件:
rageagainstthecage
su
su
rageagainstthecage负责直接破解获取Root权限,然后才能修改/system/。
su如果只放在/data/local/tmp目录下,是没有权限运行的。
su如果只放在/data/local/tmp目录下,是没有权限运行的。
所以需要把su放在/system/bin目录下。以供以后的手机应用程序使用。