更新(3rd March 2012):本方法仅适用于ITL41D (4.0.1), ITL41F (4.0.1)和ICL53F (4.0.2)。在IMM76D (4.0.4)下失效。
本文介绍的方法可以在没有解锁的Galaxy Nexus上获取root权限。至于为什么不直接解锁,对我来说,仅仅只是不想看到启动画面上那把打开的白色小锁而已。
- 首先需要Android SDK附带的adb.exe命令,跟着下载文末附件Root-locked-GN.zip,解压后将它们和adb.exe放在同一个目录下。
- 打开命令行提示符并进入存放相关文件的目录中。
- 把相关文件copy进手机:
[cc lang="bash"]adb push mempodroid /data/local/tmp/mempodroid[/cc]
[cc lang="bash"]adb push su /data/local/tmp/su[/cc]
[cc lang="bash"]adb push Superuser.apk /data/local/tmp/Superuser.apk[/cc] - 打开adbshell,敲入命令:
[cc lang="bash"]adb shell[/cc] - 赋予mempodroid可执行权限,并执行它:
[cc lang="bash"]chmod 777 /data/local/tmp/mempodroid[/cc]
[cc lang="bash"]./data/local/tmp/mempodroid 0xd7f4 0xad4b sh[/cc] - 挂载/system分区为可读写:
[cc lang="bash"]mount -o remount,rw -t ext4 /dev/block/mmcblk0p1 /system[/cc] - 把su程序复制进/system分区:
[cc lang="bash"]cat /data/local/tmp/su > /system/bin/su[/cc] - 赋予su程序执行权限:
[cc lang="bash"]chmod 06755 /system/bin/su[/cc] - 安装Superuser.apk
[cc lang="bash"]cat /data/local/tmp/Superuser.apk > /system/app/Superuser.apk[/cc] - 修改Superuser.apk的权限
[cc lang="bash"]chmod 0644 /system/app/Superuser.apk[/cc] - 把/system分区恢复成只读:
[cc lang="bash"]mount -o remount,ro -t ext4 /dev/block/mmcblk0p1 /system[/cc] - 重启手机:
[cc lang="bash"]reboot[/cc]
注: GN使用的Linux内核(2.6.39)被发现一个local privilege escalation exploit(本地特权提升漏洞).mempodroid就是利用这个漏洞使没有解锁的Android设备得到root权限。Credit to the original post on XDA.
头一次发现cat命令可以当作cp复制用。