之前使用xx手机助手root了我的手机里程碑droid4(x894), 后发现竟安装了一个什么com.mgyun.shua.su的进程, 不仅耗我的手机内存, 而且我还检测到该进程还时不时在后台发送数据, 一怒之下, 就决定自己手root之, 再者也可学习一下Android的root原理.
首先, 利用漏洞的原理参考以下文章:
http://blog.csdn.net/androidsecurity/article/details/17533285
但文章中的具体操作过程序略有出入.
大致原理就是moto的drodi4手机在启动时会自动创建以下目录:/data/local/12m及/data/local/12m/batch, 并将其权限改成普通用户可写(755), 因此把batch这个目录改成/data的软链接, 即可在重启后将/data目录改成普通用户可写(755), 然后就可为所欲为了...
我的操作过程: 先打开USB调试模式
- 下载到su和debugfs
- 上传到手机
>adb push su /data/local/12m
>adb push debugfs /data/local/12m
- 修改/data/权限为可写
>adb shell
$cd /data/local/12m
$mv batch batch.bak
$ln -s /data batch
$reboot
- 修改/data/local.prop, 改成adb root模式
>adb shell
$cd /data/
$mv local.prop local.prop.bak
$echo "ro.sys.atvc_allow_all_adb=1" > local.prop
$reboot
- 重启后发现adb shell则直接获取root权限,
- 恢复batch目录
>adb shell
#cd /data/local/12m
#rm batch
#mv batch.bak batch
- 写入su
>adb shell
$cd /data/local/12m
$./debugfs -w /dev/block/mmcblk1p20
(其中mmcblk1p20是/system目录的对应设备, 可在/dev/block/目录中看到)
root@cdma_maserati:/data/local/12m ./debugfs -w /dev/block/mmcblk1p20
./debugfs -w /dev/block/mmcblk1p20
debugfs 1.42 (29-Nov-2011)
debugfs: # cd xbin
debugfs: # write /data/local/12m/su su
debugfs: # set_inode_field su mode 0104755
debugfs: # set_inode_field su uid 0
debugfs: # set_inode_field su gid 0
debugfs: # quit
- 从安卓下载superuser.apk
完成