据我所知,需要获得 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 权限。
前期准备
- 访问 http://developer.android.com/sdk/index.html (need proxy),获取 adb 工具(需要下载 sdk,windows 还需额外下载 usb 驱动);
- 开启您的 android 设备,并执行如下操作: settings — application — development, 勾选usb debugging;
- 创建
/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 |
开始~
插入 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/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 www.magicandroidapps.com #等提示,代表成功了。
现在您可以使用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/