几个月前,我亲爱的手机坏了——一部 HTC One M7——而一位评价很高的本地电话技术人员无法将它复活。她非常想从手机中获取尽可能多的数据,但由于它没有开机,更不用说通过 USB 枚举,普通的数据恢复技术是不可能的。
传统的解决方案似乎已经用尽,我决定变得非常规。由于手机已经有效且不可恢复地变砖,我找了一个非常熟练的朋友拆卸手机并将eMMC芯片从板上取下。我购买了一个 eMMC pogo pin 读取器,将芯片放入其中,并尝试在我的 Linux PC 上读取它。
令我惊讶的是,该芯片似乎被操作系统识别并出现在 /dev 中,其中包含节点/dev/mmcblk0、/dev/mmcblk0boot0、 和/dev/mmcblk0boot1,这是意料之中的。但是,操作系统报告没有分区,转储所有块设备只会返回一堆零。
这是最后一部分让我感到困惑。闪存单元的“自然”状态是逻辑高电平 (0xFFFF ....),如果芯片在移除过程中损坏或弹簧针没有正确接触,我希望看到这种状态。但在这里我看到的都是零。我觉得不可思议的是,任何正常的操作,甚至是手机上以 root 权限运行的流氓程序,整个芯片都可以充满零。
我的问题:我是否看到了芯片的真实当前状态,或者我是否在尝试连接它并与之交谈时搞砸了一些事情?还有什么可以尝试的吗,还是我在游戏结束时?
以下是来自 sysfs 和 Linuxmmc工具的一些诊断信息。有问题的 eMMC 芯片是(我很确定)海力士 H26M64002DQR:
$ cd /sys/bus/mmc/devices/mmc0:0001
$ ls -F
block/ dsr fwrev oemid rel_sectors
cid enhanced_area_offset hwrev power/ serial
csd enhanced_area_size manfid preferred_erase_size subsystem@
date erase_size name prv type
driver@ ffu_capable ocr raw_rpmb_size_mult uevent
$ cat cid
90014a484247346504010947a6b83001
$ cat csd
d02701320f5903ffffffffef8a404001
$ cat …Run Code Online (Sandbox Code Playgroud)