Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2897349
  • 博文数量: 674
  • 博客积分: 17881
  • 博客等级: 上将
  • 技术积分: 4849
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-17 10:15
文章分类

全部博文(674)

文章存档

2013年(34)

2012年(146)

2011年(197)

2010年(297)

分类: LINUX

2012-08-17 18:55:21

ndroid 手机/平板大行其道的今天,获得 root 权限成了大家关注的话题。

据我所知,需要获得 root 权限的嵌入式操作系统,只有 ios 和 android。其中 ios 称为越狱,随着 ios 的发布,有众多高手开发了相应的傻瓜越狱工具。但是 android 应用非常广泛,却没有统一的技术支持,所以只能由用户自己进行权限破解。因为 android 的内核是 linux,而 linux 中 root 拥有至高无上的权限,所以一时间获取 root 权限也成了很多非 linuxer 关注的话题。
一键获取 android root 权限:  (不适用所有机型)

为什么要获得 root 权限呢?

其实日常应用并不需要 root 权限,但是由于一些 android 的限制,我们必须拥有 root 权限才能:

  • 下载收费软件
  • 修改系统文件
  • 替换 hosts 文件
  • 截图
  • 等等 …

连截图都要 root 权限……(记得 ios 是 home+power 吧?)

消歧

使用 adb 连接到设备获得的 root 权限并不是 设备所拥有的 root。

也就是说,连接设备成功后,我们对设备的系统具有了 root 权限,而设备系统自身并没有 root 权限。例如您在 market 看到 need rooted device 字样,那就是意味着您的设备系统也具有 root 权限。通常来说,root 指设备自身可以执行 su 并获得 root 权限。

原理

adb ( android debug bridge ) 链接设备,并使用具有 root 权限的 adb 修改/替换设备 su 文件,从而具有 root 权限。

前期准备
  • 开启您的 android 设备,并执行如下操作: settings — application — development, 勾选usb debugging;

  • 创建 /etc/udev/rules.d/51-android.rules 文件,内容如下:

ubuntu:

1
2
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4",             MODE="0666"
SUBSYSTEM=="usb_device", SYSFS{idVendor}=="0bb4",             MODE="0666"

arch:

1
2
3
SUBSYSTEM==”usb”, SYSFS{idVendor}==”0bb4″, MODE=”0666″
SUBSYSTEM==”usb”,ATTR{idVendor}==”0bb4″,ATTR{idProduct}==”0c02″,SYMLINK+=”android_adb”
SUBSYSTEM==”usb”,ATTR{idVendor}==”0bb4″,ATTR{idProduct}==”0c01″,SYMLINK+=”android_fastboot”

其中 USB Vendor IDs 可以在 这里 查到。

更改文件权限:

1
chmod a+rx /etc/udev/rules.d/50-android.rules

重新加载 udev 规则:

1
udevadm control –reload-rules
  • 下载越狱软件包,并把 su 拷贝到 adb/tools 内
  • 开始~

    插入 usb 数据线,然后打开终端,进入 adb/tools 目录,执行

    1
    adb devices

    Android adb devices显示 ????????????    no permissions怎么办?

    Windows:运行adb root

    Linux:
    adb kill-server
    sudo adb root

    此时显示为:

    List of devices attached 0123456789ABCDEF    device

    成功列出已连接的设备后,执行

    1
    2
    3
    4
    5
    6
    7
    adb shell mv /system/xbin/su /system/xbin/osu      # 备份原 su 文件
    adb push su /system/xbin      # 把 adb/tools 的 su 文件 推送到 android设备 /system/xbin
    adb shell rm /system/bin/su      # 移除其他的 su 文件
    adb shell ln -s /system/xbin/su /system/bin/su      # 软链 su
    adb shell chmod 6755 /system/xbin/su       # 变更权限
    adb shell sync      # 同步所有缓存中的文件
    adb shell reboot      # 重启 android 设备

    (您需要根据您的设备和设置变更执行的路径)

    等待设备重启完成后,可以在 adb shell 模式输入:su(回车),会出现su: access granted, courtesy of #等提示,代表成功了。

    现在您可以使用root explorer,蓝牙上网,截图,martket enabler等工具啦~

    为什么我不需要 root

    网上超多的 root 教程会让你惊奇的发现,ROOT好简单哦。但是看到新手一拿到手机就马上刷ROOT,然后再问:取了ROOT有什么用?
    我们不能完全责怪用户,因为很多教程都没有强调刷ROOT可能导致的严重后果,会危及到你手上设备的安全性。实际上,很多用户根本不需要ROOT权限!

    在开始之前,请先问你自己以下2个问题:
    1.你有几次细读过菜市场里下载的软件或者游戏的使用协议?
    2. 你有几次看了软件使用协议中的权限要求(full internet, gps location, read contacts等等)后会问“嗯,为什么这个游戏需要这些权限呢?”
    你是不是还是照安装不误呢?

    事实是,绝大多数的用户根本不会理会 程序所 请求 的这些权限,他们会照安装不误。

    虽然 market 已经通知了用户软件所需的权限,但这远远不够。 因为用户还是不知道这些权限和安全有什么关系。有些软件也许没有什么恶意,但设计的却极其的烂。因为开发者也是人,也会犯错。有时,程序员会选择一个他们认为安全的协议,但实际上却是很危险的。又或者有些恶意软件,可以让别人远程清空你的手机,或者将你手机里的信息传送回指定服务器后再清空你的手机(也许已经有这样的软件了)。我以上所说的这些例子表明,即便是非ROOT权限的程序都有可能很危险,何况那些获得ROOT权限的程序呢?

    其实,有些功能其实完全不应该需要ROOT权限的。很多用户取得ROOT权限只是为了添加一些自己的主题,为了一些小众的需求而已。

    老实的说,看到越来越多的ANDROID新手认为不ROOT就不能正常工作,让我感到很沮丧。()

    参考资料

    http://developer.android.com/guide/developing/device.html

    http://www.kunli.info/2009/08/22/archlinux-android-adb-recognize-device/

    http://henryh.cn/blog/android_cupcake_root.html

    http://blog.csdn.net/baolin1389/article/details/6395980

    阅读(1058) | 评论(0) | 转发(0) |
    给主人留下些什么吧!~~