android数据恢复

很多人都有在使用手机时误删数据的经历,比方说和女朋友分手后把之前一起玩耍的影像资料删除了,结果没过几天又复合了,某天女朋友想和你一起回忆某个温馨时刻,这时候拿不出照片或视频来会非常尴尬。为了避免这类人(Xi)间(Wen)惨(Le)剧(Jian)发生,很有必要掌握一下数据恢复技术。

传统的数据恢复往往借助软件即可完成,例如Easy Recovery,Recuva之类。但这类软件对新的安卓系统手机往往无能为力了,因为从几年前开始,大部分手机生产厂商用“媒体设备”MTP模式替代了大容量USB存储模式,而传统数据恢复软件无法直接对MTP模式加载的手机存储空间进行数据恢复,如图所示。

因此有必要研究适合于目前安卓系统手机的数据恢复方法,本文中主要讨论手机内部存储空间的数据恢复,对于手机TF卡的数据恢复采用传统手段即可完成,本文不再讨论。

目前手机数据恢复的常见方法有三种:

第一种方法:

物理拆解芯片进行数据恢复。通过拆解并取出存储芯片后,借助硬件工具读取芯片的数据后进行数据恢复。这种方法的优点在于不会对存储芯片写入新的数据,能够较好的保护数据的原始状态。缺点也显而易见,这种方法对工具和动手能力要求较高,稍有不慎手机和芯片都有报废风险,普通用户较难独立完成这类操作。

第二种方法:

借助安装在PC端的第三方工具进行数据恢复。目前网络上名气较大的安卓数据恢复工具主要有Wondershare Dr.Fone,Tenorshare-android-data-recovery,7-Data Recovery Suite 等软件,但这类软件普遍存在的问题是,常常无法与手机建立连接,或者在连接后扫描时提示失败,可能是由于安卓系列手机系统定制化程度较高,每家手机制造商都对安卓系统做了或多或少修改的缘故,导致实际效果并不理想,相信很多朋友在用这类软件时也遇到了类似的问题。

第三种方法:

借助安装在手机上的安卓APP进行数据恢复。由于APP直接运行在手机上,因此不存在第二种方法中软件与手机连接失败的问题,这类软件恢复的效果好坏很大程度上取决于软件开发人员使用的数据恢复算法能力的优劣。这类软件有很多,以某数字清理大师为例,某数字清理大师的隐私粉碎功能能够扫描到用户之前删除的部分类型文件,并确实能够对这类文件进行恢复。但其缺点也有很多,主要有四点:一是能够恢复的文件类型有限,主要是针对照片、短信、通话记录等;二是照片时只能一张一张点开恢复,无法批量恢复,操作繁琐;三是数据恢复算法不够强,与传统数据恢复工具如R-Studio和EasyRecovery相比存在不小差距;四是数据只能恢复到手机内部存储空间中,无法选择恢复到SD卡,因此手机原数据存在被新恢复数据覆盖的风险。当然,这些缺点可能与这款软件的定位是隐私粉碎而非隐私恢复相关,这些缺点在很多同类软件上也同样存在,特别是数据恢复能力方面很多软件在这方面功能实在是过于孱弱,第三种方法由于存在诸多弊端同样不能让人满意。

0×01 正确恢复安卓手机数据的姿势

那么到底有没有效果更加理想的数据恢复方法,答案是肯定的。其实以上方法中最大的问题在于,这类软件要么根本不能用,要么恢复能力太弱。如果能借助传统的数据恢复工具的强大算法,那么这类问题自然迎刃而解。下面介绍一种解决方案,能够在很大程度上解决以上方法中的瓶颈。本文中以Nubia Z9 Max NX510J为例进行说明,步骤比较详细以便尽可能照顾不同水平的读者。

第一步,对手机进行Root,Root前需要进入开发者模式并打开USB调试模式。这是最基本的要求,具体如何Root与手机的型号有关,如果实在不会就找身边的异性IT达人帮忙吧。

第二步,在手机中安装BusyBox。建议从Google官方下载,梯子自备,文章中用到的工具会在结尾处提供,懒人自取。BusyBox安装时可选择路径,假设安装在[/system/bin/busybox]。

第三步,将手机与电脑连接。连接后需要安装相应驱动,可借助豌豆荚等工具进行安装。另外需要准备好adb调试工具(adb.exe等文件),可从Android SDK官网下载,Root工具包中一般也会提供。

第四步,电脑中安装32位版本的Cygwin[C:\cygwin],并下载nc.exe和pv.exe,将这两个文件和之前准备好的adb.exe,AdbWinUsbApi.dll,AdbWinUsbApi.dll复制到[C:\cygwin\bin\]目录下。

第五步,运行[C:\cygwin\Cygwin.bat],依次输入下图中的命令,输入后窗口保持打开不要关闭:

adb forward tcp:5555 tcp:5555

adb shell

su

/system/bin/busybox nc -l -p 5555 -e /system/bin/busybox dd if=/dev/block/mmcblk0

第六步,再运行一次[C:\cygwin\Cygwin.bat]打开另一个窗口,依次输入如下命令:

adb forward tcp:5555 tcp:5555

cd /

nc 127.0.0.1 5555 | pv -i 0.5 > mmcblk0.raw

这时窗口上应该会出现如图所示的进度

耐心等待完成后,[C:\cygwin]目录下会出现mmcblk0.raw文件,文件大小等于手机内部存储空间的大小,该文件正是手机内部存储空间的镜像文件。

第七步,打开一款传统的数据恢复工具,由于raw文件是linux文件系统格式,因此需要支持这类系统的软件,经过实际使用测试发现,R-Studio和Easy Recovery均能较好识别这类文件格式,笔者更偏爱R-Studio,因此以这款软件为例。加载刚刚生成的mmcblk0.raw镜像,如图所示。

对镜像中的userdata部分进行扫描,扫描后即可找到被误删除的各类数据,女朋友终于保住了:)

使用这种方法,可以充分利用现有成熟数据恢复软件的恢复技术,大大提高安卓手机数据恢复的成功率。实际测试发现,通过这种方法找回的照片,数量上远远超过市面上各类手机数据恢复软件恢复的照片。国外已经有人写过类似教程,但可能由于对数据恢复软件不够熟悉,在提取镜像后又做了很多画蛇添足的处理,比如利用VhdTool.exe对镜像进行各种后期处理,不仅增加了步骤的繁琐程度,可能还会起到误导作用。

0×02 更多的思考

 

本文的核心在于对安卓手机镜像的提取,提取出镜像后能做的东西还有很多,比如通过分析wpa_supplicant.conf能够得出某人常去的地方等等。通过本文可以看出,如果淘汰的手机只是简单删除某些敏感文件后就直接交给一些第三方回收机构会存在多么大的风险,网上那么多小视频你觉得是怎么流出来的。如果缺乏对手机信息安全的基本保护意识,那就要承担可能面临的后果,有些后果可能会严重到付出高昂的代价。

时间: 2024-08-02 11:01:50

android数据恢复的相关文章

Android初级第二次小结

xml注释: <!-- 注释内容 --> 不能再标签的属性内部注释,在标签之外. 问题: 在控制台中出现: You must restart adb and Eclipse 关掉Eclipse以及模拟器并杀死adb.exe这个进程,重新启动 Activity   界面 四大组件之一 三大要素: 1.声明一个类继承Activity 2.关联布局文件(setContentView()) 3.必须在清单文件中注册 <activity android:name = 包名 + 类名/> 在清

设计模式-单例模式(Singleton)在Android开发应用场景思考和遇到的坑

介绍 在上篇博客中详细说明了各种单例的写法和问题.这篇主要介绍单例在Android开发中的各种应用场景以及和静态类方法的对比考虑,举实际例子说明. 单例的思考 写了这么多单例,都快忘记我们到底为什么需要单例,复习单例的本质 单例的本质:控制实例的数量 全局有且只有一个对象,并能够全局访问得到. 控制实例数量 有时候会思考如果我们需要控制实例的数量不是只有一个,而是2.3.4或者任意多个呢?我们怎样控制实例的数量,其实实现思路也简单,就是通过Map缓存实例,控制缓存的数量,当有调用就返回某个实例,

Android清单文件详解(四) ---- backupAgent的用法

在<application>节点中有一个非常重要的属性,那就是backupAgent.这里我们将它单独列出来,从基本含义,用法及其相关属性等方面来详细介绍一下. 1.backupAgent简介 android:backupAgent用来设置备份代理.对于大部分应用程序来说,都或多或少保存着一些持久性的数据,比如数据库和共享文件,或者有自己的配置信息.为了保证这些数据和配置信息的安全性以及完整性,Android提供了这样一个机制. 我们可以通过这个备份机制来保存配置信息和数据以便为应用程序提供恢

android开发之activity横竖屏切换时的生命周期以及横竖屏切换时的资源适配方案

背景:之前有过两篇写activity的博客 android之activity的生命周期详解:详细介绍了activity的整个生命周期.各状态间的转换和返回桌面时保存activity的状态 android之activity中onSaveInstanceState和onRestoreInstanceState的触发时机:介绍了activity中这两个方法的触发时机和作用 本篇博客会牵扯到里面的内容,如果你都有所了解可以直接往下看,如果不了解可以进去回忆下. 问题:在做应用的退出对话框时,发现如果对话

android 自定义View过程解析

PS:本篇文章大多数翻译自github上一篇英文文章! 总所周知,安卓UI是基于View(屏幕上的单一节点)和ViewGroup(屏幕上节点的集合),在android中有很多widgets和layouts可以用于创建UI界面,比如最常见的View有Button,TextView等等,而最常见的布局也有RelativeLayout,LinearLayout等. 在一些应用中我们不得不自定义View去满足我们的需求,自定义View可以继承一个View或者已存在的子类去创建我们自己的自定义View,甚

Android清单文件具体解释(四) ---- backupAgent的使用方法

在<application>节点中有一个很重要的属性,那就是backupAgent.这里我们将它单独列出来,从基本含义,使用方法及其相关属性等方面来具体介绍一下. 1.backupAgent简单介绍 android:backupAgent用来设置备份代理.对于大部分应用程序来说,都或多或少保存着一些持久性的数据,比方数据库和共享文件.或者有自己的配置信息.为了保证这些数据和配置信息的安全性以及完整性.Android提供了这样一个机制. 我们能够通过这个备份机制来保存配置信息和数据以便为应用程序

Android后台杀死系列之一:FragmentActivity及PhoneWindow后台杀死处理机制

App在后台久置后,再次从桌面或最近的任务列表唤醒时经常会发生崩溃,这往往是App在后台被系统杀死,再次恢复的时候遇到了问题,而在使用FragmentActivity+Fragment的时候会更加频繁.比如,如果Fragment没有提供默认构造方法,就会在重建的时候因为反射创建Fragment失败而崩溃,再比如,在onCreate里面new 一个FragmentDialog,并且show,被后台杀死后,再次唤醒的时候,就会show两个对话框,这是为什么?其实这就涉及了后台杀死及恢复的机制,其中涉

Android开发艺术探索——第一章:Activity的生命周期和启动模式

Android开发艺术探索--第一章:Activity的生命周期和启动模式 怀着无比崇敬的心情翻开了这本书,路漫漫其修远兮,程序人生,为自己加油! 一.序 作为这本书的第一章,主席还是把Activity搬上来了,也确实,和Activity打交道的次数基本上是最多的,而且他的内容和知识点也是很多的,非常值得我们优先把他掌握,Activity中文翻译过来就是"活动"的意思,但是主席觉得这样翻译有些生硬,直接翻译成"界面"可能更好,的确,Activity主要也是用于UI效

Android API Guides---Data Backup

Android的备份服务让您能够将持久应用程序数据复制到远程"云"存储,以应用程序的数据和设置提供了一个还原点.如果用户执行出厂重置或转换到一个新的Andr??oid设备,重新安装应用程序时,系统自动恢复备份数据.通过这种方式,用户不需要再现其以前的数据或应用程序设置.这个过程是完全透明的用户,并且不会影响在应用程序中的功能或用户体验. 在备份操作(该应用程序可以请求),Android的备份管理器(备份管理器)查询您的备份数据的应用程序,然后将它交给一个备份传输,然后将数据传送到云存储