获得 android 的 root 权限

时间:2023-02-04 15:44:18
android 手机/平板大行其道的今天,获得 root 权限成了大家关注的话题。

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

为什么要获得 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 的 root 权限

前期准备

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

获得 android 的 root 权限

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

ubuntu:

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

arch:

123 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

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

    1234567 adb shell mv/system/xbin/su /system/xbin/osu     # 备份原 su 文件adb push su/system/xbin      # 把 adb/tools 的 su 文件 推送到 android设备 /system/xbinadb shell rm/system/bin/su      # 移除其他的 su 文件adb shell ln-s /system/xbin/su/system/bin/su      # 软链 suadb shell chmod6755 /system/xbin/su      # 变更权限adb shell sync     # 同步所有缓存中的文件adb shell reboot     
    # 重启 android 设备

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

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

    获得 android 的 root 权限

    现在您可以使用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就不能正常工作,让我感到很沮丧。(via

    参考资料

    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://bbs.hiapk.com/thread-652917-1-1.html

     

     

     

    https://www.deleak.com/blog/2010/12/17/android-root-on-linux/