Android应用.三星i9000系列(4).SuperOneClick获取Root权限的原理

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的运行原理,就不是本文现在讨论的问题了。

你可能感兴趣的:(android,shell,sqlite,手机,三星,2010)