Android手机EMMC全盘镜像无法解析【已解决】

拿到一台酷派T2手机,有锁屏密码,带bootloader锁,不能刷Recovery,只能拆字库读数据,本以为很容易搞定,没想到解析数据出现问题。

问题类似于 http://zhidao.baidu.com/question/502998751.html

winhex、x-ways加载各种报错然后崩溃,发现是访问不到某些扇区,可用空间与实际空间不符,怀疑是ext4头部保存结构信息的位置出现错误。

bad_superblock

恢复镜像到U盘,插入Linux系统,发现真的是bad superblock错误,是sdf26、sdf30和sdf31分区。

估计是初始位置的superblock出错,考虑用备份的superblock来恢复。

执行sudo mke2fs -n /dev/sdf31,看下备份的superblock在哪个位置。

mke2fs

随便选择一个,98304,执行e2fsck -b 98304 /dev/sdf31 -y开始修复,一路yes。

放着跑,睡觉了,希望明天有奇迹……


奇迹没有发生,继续找原因。

通过十六进制查看发现数据没有问题,能够手工解析出一部分。

用DiskGenius看U盘是GPT格式的(Android 2.x版本上使用的是MBR,4.0版本以后使用的GPT分区方式),没问题,有价值的分区是最后两个ext4格式的,一个是system,一个是userdata。

diskgenus

将userdata分区位对位(十六进制)导出为img,然后把img在linux下挂载,还是不行,崩溃了+_+……

emmcimg

万念俱灰的时候试了试ext2explore(刷机时修改ROM用的一款Windows下访问Linux分区的工具),竟然可以了!!!

simg2img

虽然问题解决了,但究竟什么原因,百思不得骑姐……Linux下无法mount,但是win下用这工具为什么就能打开,还要继续研究。

BTW:发现好多老外也遇到同样的问题,也没人答得上来具体的原因,因为不是所有的手机都有这个问题,我猜测可能制作ROM的时候使用的ext2explore修改的,导致系统格式并非标准的ext4,所以无法挂载,各种报错。

 

参考:

http://forum.xda-developers.com/showthread.php?t=2562831  XDA也没人解释清楚哈~

http://forum.xda-developers.com/showthread.php?p=62704868#post62704868  回复的人也遇到了

http://blog.sina.com.cn/s/blog_5c401a150101jcos.html  eMMC分区详解

http://stackoverflow.com/questions/8663891/how-to-mount-the-android-img-file-under-linux

http://blog.sina.com.cn/s/blog_709df8c80100ldup.html  SuperBlock损坏修复

http://blog.chinaunix.net/uid-26557245-id-3748168.html  ext3文件系统超级块损坏修复

http://forum.ubuntu.org.cn/viewtopic.php?t=311792  修复超级块sudo e2fsck -b 32768 -y /dev/sda6

http://zhidao.baidu.com/question/502998751.html

http://wenku.baidu.com/link?url=eSv56Vbi8XW5n8xH596X_TbuAffr8eylF7OdCxLVnJTfkDO2fYyKvJ_RG_cZvdI7HieBQ3RgjQCovgsN0YV83gyZ7BLayhmvzKsF1hmMyKm

http://fromwiz.com/share/s/0dF72a1Nq17x2Rpg0z1ZXVvc2CBKWh16S4ml2jjNQH3HDLmf