首先已知高通的CPU内固化了一段引导程序,在手机启动不了时会引导手机进入QHSUSB_DLOAD模式。
而我们可以通过QHSUSB_DLOAD模式向不能正常启动的砖机下载MPRG8064.hex和8064_msimage.mbn
MPRG8064.hex和8064_msimage.mbn这2个文件可以从小米2的线刷包中取得(CPU一样的话,就可以通用),它的作用是让不能正常启动的手机启动到U盘模式,并把内置存储器虚拟成U盘,这时我们可以向其写入分区表、启动分区等,让手机可以启动到刷机模式。
当然,写入全镜像也可以,但因为A850有26个分区,其中只有12个分区刷机时会更新,另外一些分区存有手机固有的IMEI码等信息,不能更新,因为我们没有这些分区的信息,一旦丢失就找不回来了,所以建议手机在正常的时候进行全分区备份,以备不时之需。
首先把binx解压成bin文件,再从bin文件中解压出img,放着备用。
Binx解压可以使用suky制作的解压工具。
Bin的解压可以使用suky制作的工具或我自己写的工具。
工具下载地址:
http://pan.baidu.com/share/link?shareid=575427&uk=3071575749
工具简易使用教程:
http://blog.youkuaiyun.com/benjaminwan/article/details/8854542
本文以A850K的S0837210为例来讲解,以下带你手工解析分区表,懒人可以直接使用上面的工具来解析。
一、制作救机镜像最简单的办法
从正常的手机中备份,进入临时recovery,执行以下命令
adb shell dd if=/dev/block/mmcblk0 of=/sdcard/partition0.img bs=512 count= 658432
适用于A850备份文件的大小:512x658432/1024/1024=321.5MB
为什么需要这个数值呢?因为这正好是分区表头+起始8个分区的存储长度。
如何计算出来呢?请耐心接着看。
二、主引导记录(MBR,MasterBoot Record)
手机的内置存储器,其存储方式类似与PC机的硬盘。所以也存在主引导记录
在PC机的硬盘中,主引导记录是位于磁盘最前边的一段引导代码。它负责操作系统对磁盘进行读写时,对分区合法性的判别、分区引导信息的定位。
主引导记录共占用512个字节,由主引导记录(446字节)、分区表(64字节)、结束标志(2字节)组成。如下表所示:
起始地址 |
结束地址 |
内容 |
说明 |
0x0000 |
0x0088 |
主引导程序 |
主引导记录 |
0x0089 |
0x01BD |
出错信息数据区 |
|
0x01BE |
0x01CD |
分区项1(16字节) |
分区表 |
0x01CE |
0x01DD |
分区项2(16字节) |
|
0x01DE |
0x01ED |
分区项3(16字节) |
|
0x01EE |
0x01FD |
分区项4(16字节) |
|
0x01FE |
0x01FF |
55 AA |
结束标志 |
但是在A850手机里的情况,情况稍有不同,
使用此命令在第三方recovery中,可以把分区表备份到内置存储根目录,文件大小5kb:
adb shell dd if=/dev/block/mmcblk0 of=/sdcard/partition0.img bs=512 count=10
如果连接PC时找不到备份的文件,可以用RE管理浏览到此目录,让后台媒体扫描优先找到这个文件。
现在用Winhex打开备份出来的文件,看一下手机内置存储头512字节:
可以看到本应该是主引导记录区的0x0000~0x01BD全为0,因为引导程序已固化在CPU中了,所以手机就