以下言论思考完全只是我个人没脑子的想法,作为门外汉,对于各领域的知识并没有深刻的了解。
所以如果写错了不要打我2333
不确认刷机是否会 真 · 清空 手机上所有数据的,谨慎操作,或者拼死一搏,刷入第三方 recovery 刷机获取 root 权限应该安全点。
太贵重的资料也不建议去外面的手机店找回,因为会泄露,这么多 XX门 应该是是最好的例证了吧。
玩手机不可避免会出现不小心删掉文件想要找回文件,以及想找回以前被删掉的文件的情况,但是市面上的很多工具都是收费的(当然是真的能用),或者是无法正常运行的(面对X米的官方root授权毫无办法,当然你可以刷第三方root XD,但是我没有去尝试,是个思路),这个时候就很头疼了。
幸运的是从网上找到了一种方法,原理是:
- 通过 ADB 进入获得安卓root授权
- 通过 nc(netcat) 监听端口 tpc 连接并提供 来传输文件
- dd 命令提供输入文件(应该说是分区文件?例如 /dev/block/mmcblk0,如果有挂在 sdcard 的话,应该还能看到 sdcard)
- 科学上网
- 已 root 手机(红X5 plus,官 root)
- ubuntu
- adb
- nc
- pv
详情查看 google play 23333
一般会遇到的问题:
busybox 安装失败
在本环境中会出现很玄学的无法对 system 写入 busybox 的问题,导致各种安装失败。
解决方法是重启后第一时间安装 busybox ,怀疑是手机系统会对 system 的 rw 修改给禁止掉,导致无法将 system 从 r 模式修改为 rw 模式。
总之重启就对了
参考文章中使用 cygwin 来模拟 linux 的运行环境,但是在 nc pv 方面遇到了很多问题,包括 nc 之间连接不上,pv 无法正确监控进程,或者是 pv 没有正确打印等等,所以后来选择了实体 linux 系统并通过实测。
简单来说就是 Cygwin 模拟 linux 凉了,当然小伙伴门还是可以选择尝试一波的,可能我的 Cygwin 环境有问题。
install adb
install nc
install pv
先放结论:
因为手机内存的分区格式是 sdcardfs ,所以第三部导出的镜像虽然包含了所有的分区,但是内存数据所在的分区格式是 sdcardfs ,而 sdcardfs 是VFS和其它文件系统之间的一个中间件,并不是实际的真实访问物理存储设备的文件系统,所以是无法通过数据恢复软件读取分区格式恢复的。
因此需要通过 mount 、 df 找出手机内存底层文件系统(实际分区) 并使用第三步进行导出。
原来想要讲的话:
咳咳,上面的命令我遇到了问题, mmcblk0 应该是整个系统挂载的设备
这里就有个问题了,(现在) 安卓机的存储分区格式是 sdcardfs ,不被主流的数据恢复软件识别
但是经过 通读 sdcardfs.h 全文 我看得懂的部分,知道了 sdcardfs 是基于 Wrapfs 的一种文件管理系统。
找出重点: This program has been developed as a stackable file system based on the WrapFS
好了又要翻资料了,什么是 WrapFS 呢?
简单来说:
- 要有一个已经通过其它文件系挂载好的底层文件系统目录,mount -t ext4 /dev/block/mmcblk0p1 /system
- 要将这个已有的、挂载好的目录再挂载到/mnt/wrapfs目录,mount -t ext4 /system /mnt/wrapfs
- 现在可以通过 wrapfs 来通过底层文件系统访问物理储存设备了
欸 同理可得 知道不,所以 sdcardfs 应该也是同样的道理,于是 使用 df 查看分区信息 ,看能否辨别出手机内存分区。
好了我们现在看到了那个 52G 的大兄弟了,分别是 /data/media 跟 /dev/block/dm-1 选手。
可以看到, 系统将 dm-1 设备挂载在 /data 目录下 ,使得可以通过 /data 访问 dm-1 的文件数据,再将目录 /data/media 挂载到 /mnt/runtime/default/emulated 下,至于这个 /mnt/runtime/default/emulated 是个啥我也不清楚,但是结合上面可以很马后炮地看出,这是一个 VFS和其它文件系统之间的一个中间件,哦对它就是 sdcardfs !好了下面的话可以略过了2333.
我不知道这个究竟是个啥东西,决定 mount 查看系统的分区挂载信息 再说。
显而易见, /data/media 被挂载并通过 sdcardfs 文件系统访问,而 /data 被挂载在 /dev/block/dm-1 上,并通过 ext4 文件系统访问!
到这里为止,可以决定导出 /dev/block/dm-1 的镜像了, 使用第三步导出镜像即可。
最后是通过 R-Studio 和 Active@ Partition Recovery 测试 (拯救) 了下,确能够恢复删除的文件。
需要注意的是 ,手机官方的云备份服务的某些项目(相册)有可能存放在个人数据中,刷机是会清除个人数据的,为了用户安全肯定是真正删除的 (所以谨慎存放)。
工具下载:
- nc
- pv