找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 20251|回復(fù): 9
打印 上一主題 下一主題
收起左側(cè)

聯(lián)發(fā)科手機(jī)獲取root權(quán)限

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1 發(fā)表于 2014-4-8 13:31 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
   事實(shí)上證明,我成功的被一個(gè)軟件鄙視了。我搞了幾個(gè)星期的艱苦root之旅被一個(gè)軟件給弄好了。我很傷心。結(jié)果在我開機(jī)的時(shí)候,竟然發(fā)現(xiàn)了我修改的文件成功的出現(xiàn)在了手機(jī)的引導(dǎo)文件init.rc中,并且我強(qiáng)制設(shè)置的default.prop也以default.prop~文件的形式出現(xiàn)了。下面我把我這幾個(gè)星期的研究成果放在這里,大家可以參考看看辦。如果能成功收益,那將是極好的。
   
一、手機(jī)是如何獲取root權(quán)限的
    像root大師、百度一鍵root等軟件,是怎樣root你的手機(jī)的?root的原理是什么?
     實(shí)際上,root就是在你的手機(jī)/system/bin以及/system/xbin文件夾下放入二進(jìn)制文件:“su“。是的,由于是二進(jìn)制文件,所以沒有任何后綴。安卓是linux與JAVA模擬器的混合操作系統(tǒng),其基本核心還是LINUX系統(tǒng)。所以可執(zhí)行文件是以二進(jìn)制文件形式存在的。su文件在Linux平臺(tái)上是一個(gè)獲取權(quán)限的程序。在一臺(tái)Linux電腦上,若想要獲取root(類似于在一臺(tái)WIN電腦獲得Administrator權(quán)限,即獲得電腦完全控制權(quán)限),只用在終端下如此輸入:
~$su root
~$password:
~#
    是的。你可以清楚的發(fā)現(xiàn)提示符$變成了#,證明獲取了ROOT權(quán)限。而安卓可以直接SU不用輸入任何密碼的。你可以直接在一臺(tái)裝有超級(jí)終端的并獲取 root權(quán)限的手機(jī)上輸入
~$su
~#
    直接就變成了#號(hào)。證明成功了。此時(shí)你手機(jī)上的授權(quán)管理軟件可能提示說明授權(quán)超級(jí)用戶。同意即可。
    但是,普通的手機(jī)里不會(huì)有su文件的。那么,我們就要親自動(dòng)手了。例如,一個(gè)我曾經(jīng)嘗試root的方法,也是網(wǎng)上給的比較多的,采用adb(android debug bridge)root的方法:電腦端運(yùn)行(以LINUX電腦為例 )adb
~$./adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached
1345643193        no permissions
(監(jiān)聽5037端口)
~$./adb shell

$cd /system/bin
$root
#remount
#push ./su /system/bin/
     實(shí)際上,往往出現(xiàn)這樣的提示:permission denied(權(quán)限不夠)。當(dāng)你嘗試root命令時(shí),就會(huì)這樣提示了。而你真的能這樣做的時(shí)候,必須已經(jīng)獲取root權(quán)限了。這樣就是一個(gè)死循環(huán)。所以,這樣不行啊。嘗試卡刷吧。
二、關(guān)于卡刷,update.zip升級(jí)包的制作
     那么,就要在系統(tǒng)在以root權(quán)限啟動(dòng)時(shí),進(jìn)行root。卡刷是不錯(cuò)的選擇。就來制作刷機(jī)包吧
    在recovery下升級(jí),需要制作update包。而直接以系統(tǒng)文件目打包錄是不行的(我試過)。沒有簽名認(rèn)證的。
    制作包:需要 META-INF文件夾。把system(有su的bin和xbin)與META-INF放在一起
    修改 META-INF/com/google/android/update-script
    用記事本打開,并修改成如下內(nèi)容(我用gedit打開)(綠色是注釋):
show_progress(0.100000,0);show_progress(0.500000,0);     //顯示進(jìn)度條//
mount("MTD", "system", "/system");     //掛載system以777權(quán)限//
package_extract_dir("system","/system");   //復(fù)制文件//
set_perm(0,0,04755,"/system/bin/su");   
set_perm(0,0,04755,"/system/xbin/su");   //授予su755權(quán)限//
unmount("/system");   //卸載掛載點(diǎn)//
ui_print("Well done...");  //顯示” 成功 “//
      把META-INF和system一起打包為zip文件(命名update.zip)。下面開始進(jìn)行簽名:
      首先配置java環(huán)境(以linux為例,weindows請(qǐng)自行谷歌):
$sudo apt-get default-jdk
      下載公鑰以及私鑰:testkey.pk8 testkey.x509.pem放入update.zip文件夾下。cd進(jìn)入:
$java -jar signapk.jar testkey.x509.pem testkey.pk8 update.zip UPDATE_signed.zip
      這樣卡刷包就制作好了,可以在你的文件目錄下發(fā)現(xiàn)已經(jīng)簽名好的UPDATE_signed.zip文件了。那么刷機(jī)吧。
      但是我發(fā)現(xiàn)一個(gè)問題,由于原裝的recovery是<3e>版本,基本上不能刷第三方卡刷包,提示簽名認(rèn)證失敗。只能更換成CWMrecovery了。
三、刷機(jī)準(zhǔn)備(很蛋疼只能拿到win下刷機(jī))
      聯(lián)發(fā)科手機(jī)是很難刷機(jī)的。但也很好刷。首先獲取你手機(jī)的cpu主板型號(hào)?梢栽贔actory Mode察看。大家自己摸索吧。通過察看手機(jī),知道是MT6575 T07 版本的手機(jī)(尼采a360s)
     下載rom包。上網(wǎng)竟然能搜到。若搜不到,可以用FLASH_TOOL來Dump你手機(jī)的ROM。刷機(jī)方法網(wǎng)上一大堆,這里不贅述。但是很明顯,沒有自己手機(jī)能用的CWMrecovery。
四、自制刷機(jī)包
    下載國(guó)外大神做的img解壓工具:mkbootimg(Linux平臺(tái))
     找到原版recovery鏡像以及CMWrecovery
解壓:
$./unpack-MT65xx.pl recovery.img
$./unpack-MT65xx.pl CMWrecovery.img
      獲得內(nèi)核和鏡像文件: recovery.img-kernel.img  recovery.img-ramdisk
      把第二個(gè)里面的sbin文件夾下文件全部復(fù)制到第一個(gè)包的sbin下,確定覆蓋所有(特別是recovery文件,是recovery的內(nèi)核文件)。
修改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文件,刷入手機(jī)用吧。
(很不幸,這種方法好像BUG很多,自己根本不好解決,要多次嘗試各種版本的CWMrecovery,成功率很低,很不好弄。我自己做的img文件差不多成了死機(jī)專包,刷了很多遍,手機(jī)進(jìn)入recovery就卡死。系統(tǒng)到無大礙。)
里番:recovery.img以及boot.img進(jìn)一步研究以及安卓啟動(dòng)蛋疼的修改(有關(guān)init.rc以及default.prop)
    本次沒有使用任何第三方包,以修改原包為主:
    打開init.rc(以我的為例)(recovery.img)(藍(lán)色的是我自己改動(dòng)的):
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

#啟動(dòng)
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

# 重新啟動(dòng)adbd 讓它以管理員權(quán)限運(yùn)行
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

#強(qiáng)制修改default.prop中的值
on property:ro.secure=1
    setprop ro.secure 0

   可自行到csdn上搜索各種文章有關(guān)安卓init.rc文件的。我在這里僅僅做了簡(jiǎn)單的注釋。
   下面是我的猜想,不一定正確 。!
    安卓啟動(dòng)是依靠上面的啟動(dòng)腳本啟動(dòng)的。同時(shí)參照default.prop文件里的設(shè)置進(jìn)行啟動(dòng)管理。同時(shí)又能夠修改default.prop文件的內(nèi)容。
   解壓boot.img也能得到init.rc以及default.prop。對(duì)比可以發(fā)現(xiàn),這次的這兩個(gè)文件就大的多了。我嘗試修改了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權(quán)限。修改后刷入手機(jī)發(fā)現(xiàn)的確起作用了,并且生成了default.prop~文件以及init.rc~文件,并且init.rc的確有我修改的內(nèi)容,這樣修改不影響手機(jī)的任何功能。刷入后我發(fā)現(xiàn),default.prop中persist.service.adb.enable=0
所以都是755權(quán)限。也無法驗(yàn)證是否起效。以后我還會(huì)深入研究的。
福利:MTKroot工具
逛xda發(fā)現(xiàn)的,還是中文工具。竟然很快就root了手機(jī)。我成功的(很成功的)被完全鄙視了。。。。。。內(nèi)心很不爽。讓我一個(gè)人靜一靜。要工具的請(qǐng)留言。
  
。。
。









.。
一口氣寫這么長(zhǎng),我只想說:
累死我了。。
(標(biāo)準(zhǔn)結(jié)局)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:61785 發(fā)表于 2014-5-13 22:11 | 只看該作者
支持。。。。。。。。
回復(fù)

使用道具 舉報(bào)

板凳
ID:70507 發(fā)表于 2014-12-15 16:55 | 只看該作者
支持一下
回復(fù)

使用道具 舉報(bào)

地板
ID:72536 發(fā)表于 2015-1-20 13:24 | 只看該作者
求工具 大哥
回復(fù)

使用道具 舉報(bào)

5#
ID:73544 發(fā)表于 2015-2-11 15:35 | 只看該作者

求工具 大哥  QQ 624124427
回復(fù)

使用道具 舉報(bào)

6#
ID:85605 發(fā)表于 2015-7-14 08:44 | 只看該作者
大哥,求工具 39192170#qq.com
回復(fù)

使用道具 舉報(bào)

7#
ID:273760 發(fā)表于 2018-1-9 14:17 | 只看該作者
我想看看
回復(fù)

使用道具 舉報(bào)

8#
ID:280852 發(fā)表于 2018-1-30 11:42 | 只看該作者
大哥求工具
QQ2115386831
回復(fù)

使用道具 舉報(bào)

9#
ID:313521 發(fā)表于 2018-5-6 12:14 | 只看該作者
夠?qū)I(yè)學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

10#
ID:438264 發(fā)表于 2018-12-3 11:40 | 只看該作者
今天我才明白root的原理 謝謝樓主
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表