获得 android 的 root 权限

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 权限。

前期准备

  • 访问 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:

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 attached0123456789ABCDEF    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 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/

更多相关文章

  1. NPM 和webpack 的基础使用
  2. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  3. Android开发的重要方面之Makefile分析
  4. Android中的权限问题
  5. Android(安卓)Studio调用QT for Android生成的.so库
  6. Android(安卓)API Guides---USB Host and Accessory
  7. 干货必读丨Android(安卓)APK反编译
  8. 全程不用usb数据线,adb通过网络连接Android设备
  9. Android的多媒体框架OpenCore介绍

随机推荐

  1. Android(安卓)Dex文件结构
  2. Android的Listview用法总结和Adapter的使
  3. 判断当前网络是否可用和调用系统设置wifi
  4. Android(安卓)MapView 申请apiKey
  5. Android的消息机制
  6. Android(安卓)Studio 2.0 Instant Run问
  7. Gradle依赖总结
  8. Android(安卓)View 的工作原理浅析
  9. View机制深入学习(一)
  10. 【Gradle】自定义Android(安卓)Gradle工