找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 19055|回复: 9
打印 上一主题 下一主题
收起左侧

联发科手机获取root权限

[复制链接]
跳转到指定楼层
楼主
ID:1 发表于 2014-4-8 13:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   事实上证明,我成功的被一个软件鄙视了。我搞了几个星期的艰苦root之旅被一个软件给弄好了。我很伤心。结果在我开机的时候,竟然发现了我修改的文件成功的出现在了手机的引导文件init.rc中,并且我强制设置的default.prop也以default.prop~文件的形式出现了。下面我把我这几个星期的研究成果放在这里,大家可以参考看看办。如果能成功收益,那将是极好的。
   
一、手机是如何获取root权限的
    像root大师、百度一键root等软件,是怎样root你的手机的?root的原理是什么?
     实际上,root就是在你的手机/system/bin以及/system/xbin文件夹下放入二进制文件:“su“。是的,由于是二进制文件,所以没有任何后缀。安卓是linux与JAVA模拟器的混合操作系统,其基本核心还是LINUX系统。所以可执行文件是以二进制文件形式存在的。su文件在Linux平台上是一个获取权限的程序。在一台Linux电脑上,若想要获取root(类似于在一台WIN电脑获得Administrator权限,即获得电脑完全控制权限),只用在终端下如此输入:
~$su root
~$password:
~#
    是的。你可以清楚的发现提示符$变成了#,证明获取了ROOT权限。而安卓可以直接SU不用输入任何密码的。你可以直接在一台装有超级终端的并获取 root权限的手机上输入
~$su
~#
    直接就变成了#号。证明成功了。此时你手机上的授权管理软件可能提示说明授权超级用户。同意即可。
    但是,普通的手机里不会有su文件的。那么,我们就要亲自动手了。例如,一个我曾经尝试root的方法,也是网上给的比较多的,采用adb(android debug bridge)root的方法:电脑端运行(以LINUX电脑为例 )adb
~$./adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached
1345643193        no permissions
(监听5037端口)
~$./adb shell

$cd /system/bin
$root
#remount
#push ./su /system/bin/
     实际上,往往出现这样的提示:permission denied(权限不够)。当你尝试root命令时,就会这样提示了。而你真的能这样做的时候,必须已经获取root权限了。这样就是一个死循环。所以,这样不行啊。尝试卡刷吧。
二、关于卡刷,update.zip升级包的制作
     那么,就要在系统在以root权限启动时,进行root。卡刷是不错的选择。就来制作刷机包吧
    在recovery下升级,需要制作update包。而直接以系统文件目打包录是不行的(我试过)。没有签名认证的。
    制作包:需要 META-INF文件夹。把system(有su的bin和xbin)与META-INF放在一起
    修改 META-INF/com/google/android/update-script
    用记事本打开,并修改成如下内容(我用gedit打开)(绿色是注释):
show_progress(0.100000,0);show_progress(0.500000,0);     //显示进度条//
mount("MTD", "system", "/system");     //挂载system以777权限//
package_extract_dir("system","/system");   //复制文件//
set_perm(0,0,04755,"/system/bin/su");   
set_perm(0,0,04755,"/system/xbin/su");   //授予su755权限//
unmount("/system");   //卸载挂载点//
ui_print("Well done...");  //显示” 成功 “//
      把META-INF和system一起打包为zip文件(命名update.zip)。下面开始进行签名:
      首先配置java环境(以linux为例,weindows请自行谷歌):
$sudo apt-get default-jdk
      下载公钥以及私钥:testkey.pk8 testkey.x509.pem放入update.zip文件夹下。cd进入:
$java -jar signapk.jar testkey.x509.pem testkey.pk8 update.zip UPDATE_signed.zip
      这样卡刷包就制作好了,可以在你的文件目录下发现已经签名好的UPDATE_signed.zip文件了。那么刷机吧。
      但是我发现一个问题,由于原装的recovery是<3e>版本,基本上不能刷第三方卡刷包,提示签名认证失败。只能更换成CWMrecovery了。
三、刷机准备(很蛋疼只能拿到win下刷机)
      联发科手机是很难刷机的。但也很好刷。首先获取你手机的cpu主板型号。可以在Factory Mode察看。大家自己摸索吧。通过察看手机,知道是MT6575 T07 版本的手机(尼采a360s)
     下载rom包。上网竟然能搜到。若搜不到,可以用FLASH_TOOL来Dump你手机的ROM。刷机方法网上一大堆,这里不赘述。但是很明显,没有自己手机能用的CWMrecovery。
四、自制刷机包
    下载国外大神做的img解压工具:mkbootimg(Linux平台)
     找到原版recovery镜像以及CMWrecovery
解压:
$./unpack-MT65xx.pl recovery.img
$./unpack-MT65xx.pl CMWrecovery.img
      获得内核和镜像文件: recovery.img-kernel.img  recovery.img-ramdisk
      把第二个里面的sbin文件夹下文件全部复制到第一个包的sbin下,确定覆盖所有(特别是recovery文件,是recovery的内核文件)。
修改default.prop:
## ADDITIONAL_DEFAULT_PROPERTIES
#
ro.secure=0
ro.allow.mock.location=0
persist.mtk.aee.aed=on
ro.debuggable=1
persist.service.adb.enable=1
service.adb.root=1
# begin build properties
# autogenerated by buildinfo.sh
ro.build.id=alpsepade
ro.build.display.id=epadeALPS.GB2.MP.V2
...(省略)(红字特别重要,一定这样改)
    把修改好的文件保存,再次打包:
$./repack-MT65xx.pl -recovery recovery.img-kernel recovery.img-ramdisk newrecovery.img
    这样你就获得了你自己的newrecovery.img文件,刷入手机用吧。
(很不幸,这种方法好像BUG很多,自己根本不好解决,要多次尝试各种版本的CWMrecovery,成功率很低,很不好弄。我自己做的img文件差不多成了死机专包,刷了很多遍,手机进入recovery就卡死。系统到无大碍。)
里番:recovery.img以及boot.img进一步研究以及安卓启动蛋疼的修改(有关init.rc以及default.prop)
    本次没有使用任何第三方包,以修改原包为主:
    打开init.rc(以我的为例)(recovery.img)(蓝色的是我自己改动的):
on early-init
    start ueventd

#挂载以及新建目录
on init        
    export PATH /sbin
    export ANDROID_ROOT /system
    export ANDROID_DATA /data
    export EXTERNAL_STORAGE /sdcard

    symlink /system/etc /etc

    mkdir /sdcard
    mkdir /system
    mkdir /data
    mkdir /cache
    mount /tmp /tmp tmpfs
    insmod /sbup.ko
    mknod /dev/sec c 182 0
    chmod 0660 /dev/sec
    chmod 0777 /system/bin
    chmod 0777 /system/xbin

#启动
on boot

    ifup lo
    hostname localhost
    domainname localdomain

    class_start default

service ueventd /sbin/ueventd
    critical

service recovery /sbin/recovery

service adbd /sbin/adbd recovery
    disabled

# 总是开启adb
on property:ro.debuggable=1
    #write /sys/class/usb_composite/adb/enable 1
    #start adbd
    setprop service.adb.root 1

# 重新启动adbd 让它以管理员权限运行
on property:service.adb.root=1
    write /sys/class/usb_composite/adb/enable 0
    restart adbd
    write /sys/class/usb_composite/adb/enable 1

on property:persist.service.adb.enable=1
    start adbd

on property:persist.service.adb.enable=0
    stop adbd

#强制修改default.prop中的值
on property:ro.secure=1
    setprop ro.secure 0

   可自行到csdn上搜索各种文章有关安卓init.rc文件的。我在这里仅仅做了简单的注释。
   下面是我的猜想,不一定正确 !!!
    安卓启动是依靠上面的启动脚本启动的。同时参照default.prop文件里的设置进行启动管理。同时又能够修改default.prop文件的内容。
   解压boot.img也能得到init.rc以及default.prop。对比可以发现,这次的这两个文件就大的多了。我尝试修改了boot.img的init.rc文件:
. . . . .
on property:ro.secure=0
    start console
. . . . .
on property:persist.service.adb.enable=1
    chmod 0777 /system/bin
    chmod 0777 /system/xbin
    chmod 0777 /system
    start xlogdebugchanged
    start adbd

on property:persist.service.adb.enable=0
    chmod 0755 /system/bin
    chmod 0755 /system/xbin
    chmod 0755 /system
    start xlogdebugchanged
    stop adbd
. . . . .
    可以看出,我修改的部分(红字)是想尝试获取777权限。修改后刷入手机发现的确起作用了,并且生成了default.prop~文件以及init.rc~文件,并且init.rc的确有我修改的内容,这样修改不影响手机的任何功能。刷入后我发现,default.prop中persist.service.adb.enable=0
所以都是755权限。也无法验证是否起效。以后我还会深入研究的。
福利:MTKroot工具
逛xda发现的,还是中文工具。竟然很快就root了手机。我成功的(很成功的)被完全鄙视了。。。。。。内心很不爽。让我一个人静一静。要工具的请留言。
  
。。










.。
一口气写这么长,我只想说:
累死我了!!!
(标准结局)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:61785 发表于 2014-5-13 22:11 | 只看该作者
支持。。。。。。。。
回复

使用道具 举报

板凳
ID:70507 发表于 2014-12-15 16:55 | 只看该作者
支持一下
回复

使用道具 举报

地板
ID:72536 发表于 2015-1-20 13:24 | 只看该作者
求工具 大哥
回复

使用道具 举报

5#
ID:73544 发表于 2015-2-11 15:35 | 只看该作者

求工具 大哥  QQ 624124427
回复

使用道具 举报

6#
ID:85605 发表于 2015-7-14 08:44 | 只看该作者
大哥,求工具 39192170#qq.com
回复

使用道具 举报

7#
ID:273760 发表于 2018-1-9 14:17 | 只看该作者
我想看看
回复

使用道具 举报

8#
ID:280852 发表于 2018-1-30 11:42 | 只看该作者
大哥求工具
QQ2115386831
回复

使用道具 举报

9#
ID:313521 发表于 2018-5-6 12:14 | 只看该作者
够专业学习了
回复

使用道具 举报

10#
ID:438264 发表于 2018-12-3 11:40 | 只看该作者
今天我才明白root的原理 谢谢楼主
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表