Android应用.三星i9000系列(4).SuperOneClick获取Root权限的原理
草木瓜 20110408
一、前言
经过笔者自己测试与分析,得出结论:所以Android手机获取Root权限,最直观
最有效,最简便的就是SuperOneClick方法!
与i9000基带版本的什么JPE,JPD,JP8等等,没有关系
与i9000Android软件版本的什么2.0,2.1,2.2等等,没有关系
与具体的什么Android手机也没有关系
管你是三星的,还是MOTO的,还是HTC......
到底与什么有关呢,我理解是Linux的内核版本!当然普通用户根本不必关心!
后续的文章会提到有关破解Root的底层概念,当然也超出普通用户的理解范围。
这里,我只想介绍一下SuperOneClick获取Root权限的简单原理!
二、提示
有关Root权限的获取方法可参考
《Android应用.三星i9000系列(3).无需刷机轻松获取Root权限》
本系列文章:http://blog.csdn.net/liwei_cmg/category/241839.aspx
三、原理简介
我们已经知道adb(Android Debug Bridge)这个概念,不管是Moto的,还是Samsung
的,Android手机通过USB连接电脑后,安装好驱动,在设备管理器里都会看到Android
Composite ADB Interface这样的东东。SuperOneClick就是调用的adb这样的接口。
同样豌豆荚,91手机助手这样的软件也是使用了adb。
关于Android手机USB连接电脑的相关内容,可参考:
《Android应用.三星i9000系列(1).版本选择与USB连接电脑》
四、SuperOneClick提取Root权限的基本步骤
F:/Own/Phone/Samsung/Tools/SuperOneClick 的目录下所有文件
2010/10/16 22:04 577,335 adb.exe
2010/10/18 11:27 339,885 adblinux
2010/10/18 11:26 171,656 adbmac
2010/10/16 22:04 96,256 AdbWinApi.dll
2010/10/16 22:04 60,928 AdbWinUsbApi.dll
2010/10/16 23:29 1,062,992 busybox
2010/10/16 22:04 5,392 rageagainstthecage //步骤一
2010/10/16 22:04 24,120 sqlite3
2010/10/16 22:04 26,264 su //步骤二
2010/11/04 21:21 379,392 SuperOneClick.exe
2010/10/16 22:04 196,521 Superuser.apk //步骤三
手机USB调试方法连接好电脑后,在电脑上运行SuperOneClick.exe,在弹出的
界面上,点击Root按钮,便开始了Root权限提取的自动操作!
其实它的步骤是这样的:
步骤一:将rageagainstthecage文件存放在手机/data/local/tmp下,并执行
--------------------------------------------------------------------------------
1) 将文件放在/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
3) 使用adb shell,运行rageagainstthecage
$ ./rageagainstthecage
[*] CVE-2010-EASY Android local root exploit (C) 2010 by 743C
[*] checking NPROC limit ...
[+] RLIMIT_NPROC={2410, 2410}
[*] Searching for adb ...
[+] Found adb as PID 19374
[*] Spawning children. Dont type anything and wait for reset!
[*]
[*] If you like what we are doing you can send us PayPal money to
[*] [email protected] so we can compensate time, effort and HW costs.
[*] If you are a company and feel like you profit from our work,
[*] we also accept donations > 1000 USD!
[*]
[*] adb connection will be reset. restart adb server on desktop and re-login.
$
此时退出shell,再次使用adb shell,会发现提示符为#,已经在电脑Shell
上获取了Root权限。如果不是#,重复执行(./rageagainstthecage),
直到提示#。
F:/Own/Phone/Samsung/Tools/SuperOneClick>adb shell
#
步骤二:将/system修改为可读写,把su复制到/system/bin/
--------------------------------------------------------------------------------
1)上步骤一成功出现的#号提示符下,修改/system
# mount -o remount rw /system
#
2)另开一个命令行窗口,复制su至/system/bin
F:/Own/Phone/Samsung/Tools/SuperOneClick>adb push su /system/bin
su这个文件的功能,便是实现:普通用户至root超级用户的权限切换!
步骤三:将授权管理的标准Android软件包(Superuser.apk)复制到手机并安装
--------------------------------------------------------------------------------
这个过程很简单,不再赘述,就是adb push与adb install。授权管理其实
就是管理哪些程序能够使用su。也就意味着对超级用户权限的使用进行管理。
步骤四:重启手机
--------------------------------------------------------------------------------
其实就是重启测试一下。
五、总结
在提取Root权限过程中,只有两个重要的文件:
rageagainstthecage
su
rageagainstthecage负责直接破解获取Root权限,然后才能修改/system/。
su如果只放在/data/local/tmp目录下,是没有权限运行的。
$ ls -l su
ls -l su
-rwxrwxrwx shell shell 26264 2010-10-16 22:04 su
$ ./su
./su
Permission denied
$
所以需要把su放在/system/bin目录下。以供以后的手机应用程序使用!
至于rageagainstthecage,su的运行原理,就不是本文现在讨论的问题了。