联系我们 - 广告服务 - 联系电话:
您的当前位置: > 综合 > > 正文

全球简讯:android怎么会不能root到手机?T328W ROOT教程

来源:CSDN 时间:2023-03-17 11:02:26

声明!本教程不适用于普通手机用户。本教程谢绝任何关于android的2B的刷机论坛的转载! 本人对各种刷机论坛保持随时鄙视权利!


(相关资料图)

2012年7月买了台手机:联通到定制机渴望V (T328W)

合约机啊。里面垃圾软件太多了!作为一个在Android界混了3年到程序猿。。。我怎能忍受这般折磨? 所以几天后就开始root 网上教程真他妈的多啊。随便找了一个试试,是什么掌酷首发。。。 首发个毛啊。。球用都没有。 后来又在网上试试别到。都他妈的垃圾,忽悠哥。还刷recovery?刷毛啊。这帮骗子,给你在网上写个教程,然后你照着他到步骤一步步做下去,结果必然变砖。然后这帮骗子给你留个QQ,下来你就会找这帮所谓到专家,然后这帮狗日到就给你个帐号,你先汇款。。。 幸亏哥老早就知道可能有这么回事。 作为一个玩android怎么会不能root自己到手机? 所以从这以后,哥就自己琢磨琢磨。功夫不负有心的哥啊。今天中午,终于tmd搞定了HTC T328W 从此哥再也无视HTC了! 以下为root过程,本过程针对android开发人员,普通用户可能会存在障碍。

原理:让adbd运行在root状态下。这样用adb登录到手机到时候就无所不能了。要让adbd能运行在root状态下,只要让/default.prop的ro.debuggable=1即可,所以是对rootfs做修改。(顺便说下:这个default.prop文件是在系统编译过程当中根据编译选项自动生成的。参考:build/tools/post_process_props.py)

0. 先解锁hboot。去www.htcdev.com.这里有官方的操作步骤。(警告!解锁后会回复出厂设置!你所有到东西和设置包括通讯录什么到都会丢掉!所以,解锁前务必备份你的东西!哥今天就犯了这个错误!悔恨啊。这大过年的,别人给我发的祝福短信都丢了。。我还没来得及回复呢。。。朋友们,如果你今年没收到我的回复,就是因为这个原因。。。)

1. 获取boot.img (因为boot.img是由kernel和rootfs构成) 2. 从boot.img中解压出rootfs。修改其中到default.prop文件即可。如果你愿意,你也可以修改init.rc中到内容,来做你期望到事情。其实有了adb root。你完全没必要在对init.rc耿耿于怀。 3. 重新打包boot.img 。然后用fastboot烧进去就完事。 好了,就这么些步骤。 首先来看第一步,如何获取一个靠谱到boot.img 这个当让不能在那些2B论坛来下载了。最简单到方法就是等待htc的自动系统更新。当手机更新时,会从htc到网站下载一个xxxxxxx.zip文件,比如:OTA_PRIMO_DS_ICS_40A_HTCCN_CHS_CU_1.74.1402.3-1.74.1402.2_release_306254pieh7ifxq1og6geo.zip 从这个文件你可以解压出:firmware.zip 。然后从这个文件,你可以解压出boot.img等。 你可以慢慢等待这个系统更新到时机。当系统更新时,首先会下载这个zip包,当下载完毕后就开始更新,更新完后系统会将这个包删掉,所以你要抓住机会把这个文件copy出来!很简单,当系统更新时,他会提示你确认更新系统。这时候,你先不要确认更新!连接usb线,或者用其他方式从手机到/android/目录下把这个zip文件考出来,然后你在点击确定开始更新系统。 当然,并不是每次更新都会更新firmware。有时候一些小更新可能只是针对应用程序到更新。所以,得到这个zip包以后,你先看看里面是不是有firmware。 好了,现在你有了一个绝对可靠到boot.img  。接下来看看第二步,获取boot.img 中到roofs并修改之。 htc到boot.img中会有一个256字节到header,我估计是用来在release版本做文件校验到。但是值得庆幸的,htc还没有把事情做的太绝。因为经过验证,他允许boot.img没有这个header,当然没有这个header的时候在启动kernel到htc会在屏幕上打印出一些警告信息,当然这仅仅是一个log而已。所以,很显然,要解压boot.img你必须首先把这个header去掉!用牛逼到dd命令吧。(多年前我就这么评价dd) dd if=boot.img of=boot-no-header.img bs=256 skip=1 好了,现在有了一个通用到img了。现在就可以解压缩这个img了,这个解包到方法你可以在网上找到很多,当然,你知道都是抄的。 用这个经典到脚本来做吧: ./split.pl boot-no-header.img 解包完成后你会得到: boot-no-header.img-kernel boot-no-header.img-ramdisk.gz 两个文件,后者就是rootfs (ramdisk)。用命令行或者点击鼠标邮件把它解压缩了。你会看到文件:boot-no-header.img-ramdisk 这是个用gpio打包到文件,继续点击邮件解压缩了。或者用cpio命令来解压缩。 解压缩后你会看到boot-no-header.img-ramdisk_FILES目录。这就是rootfs。现在把default.prop的ro.debuggable=0改为ro.debuggable=1保存即可。完毕。 接下来重新打包,重新生成boot.img就大功告成。 打包第一步,把rootfs重新变成ramdisk 和ramdisk.gz  可以用cpio命令(去搜,一大堆)。也可一用android的工具:mkbootfs命令。 我用后者:  mkbootfs boot-no-header.img-ramdisk_FILES > new.img new.img就是新到ramdisk,接下来用minigzip把这个new.img压缩一下: minigzip new.img 好了,现在你可以看到生成了new.img.gz 接下来生成boot.img : mkbootimg --cmdline "no_console_suspend=1 console=null" --kernel boot-no-header.img-kernel --ramdisk new.img.gz -o mynewimage.img 好了这个mynewimage.img就是我们修改过到img了!!!!! 但是,还差一点点。可能是mkbootimg的版本问题,我生成的这个mynewimage.img的header和原始到header不太一样。这里就是一个结构体而已。所以我还需要把这个文件到header改变一下!方法就是用boot-no-header.img的前64Byte替换这个mynewimage.img的前64Byte。 先删掉mynewimage.img的前64字节: dd if=mynewimage.img of=mynewimage-no-64.img bs=64 skip=1 拿到boot-no-header.img的前64字节: dd if=../boot-no-header.img of=64.img bs=64 count=1 将mynewimage-no-64.img追加到64.img之后: dd if=mynewimage-no-64.img of=64.img bs=64 seek=1 完毕!这个新的64.img就是我们最终到img。现在把它烧进去就好了! 用adb重启到bootloader。 adb reboot bootloader 或者你也可以按住音量键- 然后再按电源键开机,来切换到bootloader模式 烧写kernel: fastboot flash boot 64.img  重启(当然你也可以拔下电源重启): fastboot reboot 现在试试adb root: cpp@cpp:~/Desktop/test20130210/boot+ramdisk$ adb root restarting adbd as root cpp@cpp:~/Desktop/test20130210/boot+ramdisk$ adb shell 如果这时候执行adb shell 不管用到话可以先kill掉server: cpp@cpp:~/Desktop/test20130210/boot+ramdisk$ adb kill-server 然后重新执行adb shell: cpp@cpp:~/Desktop/test20130210/boot+ramdisk$ adb shell * daemon not running. starting it now on port 5037 * * daemon started successfully * root@android:/ #  root@android:/ #  root@android:/ #  多可爱到#号! 现在可以为所欲为了! 如果要写入文件记着先 adb root 然后 adb remount system rw 然后再: adb shell

就可以修改文件了。当然你也可以在/bin目录中放个su命令什么的。

顺便说下关于充电时还显示那个没用的充电图标的解决,一直没想明白为什么充电到时候不关LCD呢?已经有一个LED的指示灯了,还让背光耗着电,我觉得有点儿脑残。。

解决方案:把这个文件弄死就可以了:/system/bin/zchgd  

改个名字,或者删掉init.primods.rc的下面几行

service zchgd_offmode /system/bin/zchgd -pseudooffmode                                                                             user root     group root graphics     disabled service zchgd_onmode /system/bin/zchgd -onmode     user root     group root graphics     oneshot

附上android工具(linux版的)下载链接:http://download.csdn.net/detail/coder_jack/5060722

包括:adb  fastboot  minigzip  mkbootfs  mkbootimg  split.pl

附上我的操作记录:仅供参考 //================================================================================================================ cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$ git status # On branch master # Changes not staged for commit: #   (use "git add ..." to update what will be committed) #   (use "git checkout -- ..." to discard changes in working directory) # # modified:   boot-no-header.img-ramdisk_FILES/default.prop # # Untracked files: #   (use "git add ..." to include in what will be committed) # # boot-no-header.img-kernel # boot-no-header.img-ramdisk # boot-no-header.img-ramdisk.gz no changes added to commit (use "git add" and/or "git commit -a") cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$ git diff diff --git a/boot-no-header.img-ramdisk_FILES/default.prop b/boot-no-header.img-ramdisk_FILES/default.prop index 8b898cb..4bd9b38 100644 --- a/boot-no-header.img-ramdisk_FILES/default.prop +++ b/boot-no-header.img-ramdisk_FILES/default.prop @@ -3,5 +3,5 @@  #  ro.secure=1  ro.allow.mock.location=0 -ro.debuggable=0 +ro.debuggable=1  persist.service.adb.enable=0 cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$ ls boot-no-header.img-kernel  boot-no-header.img-ramdisk  boot-no-header.img-ramdisk_FILES  boot-no-header.img-ramdisk.gz cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$ mkbootfs boot-no-header.img-ramdisk_FILES > new.img cpp@cpp:~/Desktop/test20130210/boot+ramdisk$ ls -al total 3620 drwxrwxr-x 4 cpp cpp    4096 Feb 10 16:13 . drwxrwxr-x 3 cpp cpp    4096 Feb 10 14:27 .. -rw-rw-r-- 1 cpp cpp 2857752 Feb 10 14:27 boot-no-header.img-kernel -rw-rw-r-- 1 cpp cpp  322048 Feb 10 15:42 boot-no-header.img-ramdisk drwxrwxr-x 8 cpp cpp    4096 Feb 10 16:10 boot-no-header.img-ramdisk_FILES -rw-rw-r-- 1 cpp cpp  182640 Feb 10 14:27 boot-no-header.img-ramdisk.gz drwxrwxr-x 8 cpp cpp    4096 Feb 10 16:13 .git -rw-rw-r-- 1 cpp cpp  322048 Feb 10 16:13 new.img cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$ minigzip new.img  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$ ls -al total 3484 drwxrwxr-x 4 cpp cpp    4096 Feb 10 16:14 . drwxrwxr-x 3 cpp cpp    4096 Feb 10 14:27 .. -rw-rw-r-- 1 cpp cpp 2857752 Feb 10 14:27 boot-no-header.img-kernel -rw-rw-r-- 1 cpp cpp  322048 Feb 10 15:42 boot-no-header.img-ramdisk drwxrwxr-x 8 cpp cpp    4096 Feb 10 16:10 boot-no-header.img-ramdisk_FILES -rw-rw-r-- 1 cpp cpp  182640 Feb 10 14:27 boot-no-header.img-ramdisk.gz drwxrwxr-x 8 cpp cpp    4096 Feb 10 16:13 .git -rw-rw-r-- 1 cpp cpp  182641 Feb 10 16:14 new.img.gz cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$ mkbootimg --cmdline "no_console_suspend=1 console=null" --kernel boot-no-header.img-kernel --ramdisk new.img.gz -o mynewimage.img cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$ dd if=mynewimage.img of=mynewimage-no-64.img bs=64 skip=1 47583+0 records in 47583+0 records out 3045312 bytes (3.0 MB) copied, 0.117426 s, 25.9 MB/s cpp@cpp:~/Desktop/test20130210/boot+ramdisk$ ls -al total 9436 drwxrwxr-x 4 cpp cpp    4096 Feb 10 16:16 . drwxrwxr-x 3 cpp cpp    4096 Feb 10 14:27 .. -rw-rw-r-- 1 cpp cpp 2857752 Feb 10 14:27 boot-no-header.img-kernel -rw-rw-r-- 1 cpp cpp  322048 Feb 10 15:42 boot-no-header.img-ramdisk drwxrwxr-x 8 cpp cpp    4096 Feb 10 16:10 boot-no-header.img-ramdisk_FILES -rw-rw-r-- 1 cpp cpp  182640 Feb 10 14:27 boot-no-header.img-ramdisk.gz drwxrwxr-x 8 cpp cpp    4096 Feb 10 16:13 .git -rw-r--r-- 1 cpp cpp 3045376 Feb 10 16:14 mynewimage.img -rw-rw-r-- 1 cpp cpp 3045312 Feb 10 16:16 mynewimage-no-64.img -rw-rw-r-- 1 cpp cpp  182641 Feb 10 16:14 new.img.gz cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$ dd if=../ boot.img boot-no-header.img boot+ramdisk/ OTA_PRIMO_DS_ICS_40A_HTCCN_CHS_CU_1.74.1402.3-1.74.1402.2_release_306254pieh7ifxq1og6geo.zip split.pl Unlock_code.bin cpp@cpp:~/Desktop/test20130210/boot+ramdisk$ dd if=../boot-no-header.img of=64.img bs=64 count=1 1+0 records in 1+0 records out 64 bytes (64 B) copied, 5.4361e-05 s, 1.2 MB/s cpp@cpp:~/Desktop/test20130210/boot+ramdisk$ ls 64.img                     boot-no-header.img-ramdisk        boot-no-header.img-ramdisk.gz  mynewimage-no-64.img boot-no-header.img-kernel  boot-no-header.img-ramdisk_FILES  mynewimage.img                 new.img.gz cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$ ls -al total 9440 drwxrwxr-x 4 cpp cpp    4096 Feb 10 16:17 . drwxrwxr-x 3 cpp cpp    4096 Feb 10 14:27 .. -rw-rw-r-- 1 cpp cpp      64 Feb 10 16:17 64.img -rw-rw-r-- 1 cpp cpp 2857752 Feb 10 14:27 boot-no-header.img-kernel -rw-rw-r-- 1 cpp cpp  322048 Feb 10 15:42 boot-no-header.img-ramdisk drwxrwxr-x 8 cpp cpp    4096 Feb 10 16:10 boot-no-header.img-ramdisk_FILES -rw-rw-r-- 1 cpp cpp  182640 Feb 10 14:27 boot-no-header.img-ramdisk.gz drwxrwxr-x 8 cpp cpp    4096 Feb 10 16:13 .git -rw-r--r-- 1 cpp cpp 3045376 Feb 10 16:14 mynewimage.img -rw-rw-r-- 1 cpp cpp 3045312 Feb 10 16:16 mynewimage-no-64.img -rw-rw-r-- 1 cpp cpp  182641 Feb 10 16:14 new.img.gz cpp@cpp:~/Desktop/test20130210/boot+ramdisk$ dd if=mynewimage-no-64.img of=64.img bs=64 seek=1 47583+0 records in 47583+0 records out 3045312 bytes (3.0 MB) copied, 0.113646 s, 26.8 MB/s cpp@cpp:~/Desktop/test20130210/boot+ramdisk$ ls -al total 12412 drwxrwxr-x 4 cpp cpp    4096 Feb 10 16:17 . drwxrwxr-x 3 cpp cpp    4096 Feb 10 14:27 .. -rw-rw-r-- 1 cpp cpp 3045376 Feb 10 16:18 64.img -rw-rw-r-- 1 cpp cpp 2857752 Feb 10 14:27 boot-no-header.img-kernel -rw-rw-r-- 1 cpp cpp  322048 Feb 10 15:42 boot-no-header.img-ramdisk drwxrwxr-x 8 cpp cpp    4096 Feb 10 16:10 boot-no-header.img-ramdisk_FILES -rw-rw-r-- 1 cpp cpp  182640 Feb 10 14:27 boot-no-header.img-ramdisk.gz drwxrwxr-x 8 cpp cpp    4096 Feb 10 16:13 .git -rw-r--r-- 1 cpp cpp 3045376 Feb 10 16:14 mynewimage.img -rw-rw-r-- 1 cpp cpp 3045312 Feb 10 16:16 mynewimage-no-64.img -rw-rw-r-- 1 cpp cpp  182641 Feb 10 16:14 new.img.gz cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$ adb reboot bootloader cpp@cpp:~/Desktop/test20130210/boot+ramdisk$ fastboot flash boot 64.img  sending "boot" (2974 KB)... OKAY [  0.622s] writing "boot"... OKAY [  0.674s] finished. total time: 1.297s cpp@cpp:~/Desktop/test20130210/boot+ramdisk$ fastboot reboot rebooting... finished. total time: 0.163s cpp@cpp:~/Desktop/test20130210/boot+ramdisk$ adb root restarting adbd as root cpp@cpp:~/Desktop/test20130210/boot+ramdisk$ adb shell ^C cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$ adb kill-server cpp@cpp:~/Desktop/test20130210/boot+ramdisk$ adb shell * daemon not running. starting it now on port 5037 * * daemon started successfully * root@android:/ #  root@android:/ #  root@android:/ #  root@android:/ # ls acct cache config cwkeys d data default.prop dev devlog etc init init.goldfish.rc init.primods.rc init.rc init.usb.rc logo.rle mnt proc root sbin sdcard sys system ueventd.goldfish.rc ueventd.primods.rc ueventd.rc vendor root@android:/ # cd system root@android:/system # ls app bin build.prop customize etc fonts framework lib media tts usr vendor xbin root@android:/system #    root@android:/system #  root@android:/system #  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$ ls 64.img  boot-no-header.img-kernel  boot-no-header.img-ramdisk  boot-no-header.img-ramdisk_FILES  boot-no-header.img-ramdisk.gz  mynewimage.img  mynewimage-no-64.img  new.img.gz cpp@cpp:~/Desktop/test20130210/boot+ramdisk$ git status # On branch master # Changes not staged for commit: #   (use "git add ..." to update what will be committed) #   (use "git checkout -- ..." to discard changes in working directory) # # modified:   boot-no-header.img-ramdisk_FILES/default.prop # # Untracked files: #   (use "git add ..." to include in what will be committed) # # 64.img # boot-no-header.img-kernel # boot-no-header.img-ramdisk # boot-no-header.img-ramdisk.gz # mynewimage-no-64.img # mynewimage.img # new.img.gz no changes added to commit (use "git add" and/or "git commit -a") cpp@cpp:~/Desktop/test20130210/boot+ramdisk$ git diff diff --git a/boot-no-header.img-ramdisk_FILES/default.prop b/boot-no-header.img-ramdisk_FILES/default.prop index 8b898cb..4bd9b38 100644 --- a/boot-no-header.img-ramdisk_FILES/default.prop +++ b/boot-no-header.img-ramdisk_FILES/default.prop @@ -3,5 +3,5 @@  #  ro.secure=1  ro.allow.mock.location=0 -ro.debuggable=0 +ro.debuggable=1  persist.service.adb.enable=0 cpp@cpp:~/Desktop/test20130210/boot+ramdisk$  cpp@cpp:~/Desktop/test20130210/boot+ramdisk$
责任编辑:

标签:

相关推荐:

精彩放送:

新闻聚焦
Top