Windows默认启用的系统恢复机制会定期创建卷影副本,创建的时机通常为安装或卸载软件以及系统更新。卷影副本 (Volume Shadow) 实际上就是我们在 Linux 上经常提到的 “快照(Snapshot)”,它利用写时复制 (CoW) 机制为我们提供了文件系统在某个时间点的一个状态的视图。通过利用这个视图,我们可以找回近期不慎删除或被覆盖的数据,也可以用于某些电子取证场景。实际上,系统恢复就是利用快照机制还原文件到先前某个状态实现的。
注意: 由于卷影副本存在一个严重的bug, 该方法并不可靠!找回的文件数据可能不完整,或需要手动拼接。该方法仅供紧急情况或取证场景使用,切勿以此代替备份软件。
前提条件: 系统恢复未被禁用、文件系统为NTFS、存在可用的系统恢复还原点
利用软链接将卷影副本链接到常规磁盘分区下面,就可以访问这些过去时间点的文件系统视图了。
方法
NirSoft搞了个小工具可以浏览卷影副本,不过它实在是有够难用,这里就详提了,不过有兴趣的话可以在这里下载。
在本文,我们直接将卷影副本挂载到文件系统下。
挂载卷影副本
- 打开管理员 PowerShell:
- 执行
vssadmin list shadows
,你将得到类似的输出:
# vssadmin list shadows
vssadmin 1.1 - 卷影复制服务管理命令行工具
(C) 版权所有 2001-2013 Microsoft Corp.
卷影副本集 ID: {417b9ac4-5e82-4687-9ee5-83b5336d938b} 的内容
在创建时间: 2023/12/27 15:02:31 含有 2 个卷影副本
卷影副本 ID: {73db4f82-8385-4d31-961e-d2580f7e18e7}
原始卷: (C:)\\?\Volume{d95a35be-bbe1-441e-9d96-18000983ef7e}\
卷影副本卷: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2
源起机器: REVO
服务机器: REVO
提供程序: 'Microsoft Software Shadow Copy provider 1.0'
类型: ClientAccessibleWriters
属性: 持续, 客户端可访问, 无自动释放, 差异, 自动还原
卷影副本 ID: {76f24a70-defe-4d38-9864-538077402122}
原始卷: (F:)\\?\Volume{2d738c4b-1e6e-416e-bc9b-d15d512cfe98}\
卷影副本卷: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy10
源起机器: REVO
服务机器: REVO
提供程序: 'Microsoft Software Shadow Copy provider 1.0'
类型: ClientAccessibleWriters
属性: 持续, 客户端可访问, 无自动释放, 差异, 自动还原
- 注意”原始卷:” 一列表示你的磁盘分区根据原始卷和日期,找到你想要挂载的卷影副本
- 复制 “卷影副本卷” 后面的一串 UNC 路径,我们以第二个为例,复制:
\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy10
- 执行以下命令将卷影副本挂载到文件系统,在本文中,我们将其挂载到
C:\Mounts\HarddiskVolumeShadowCopy10
,注意要把\\?
替换为\\.
,并在末尾补上一个反斜线:
# 首先自行创建一个文件夹 C:\Mounts
# 注意把 \\? 替换为 \\. 并在末尾补上一个反斜线
New-Item -Path C:\Mounts\HarddiskVolumeShadowCopy10 -ItemType SymbolicLink -Value \\.\GLOBALROOT\Device\HarddiskVolumeShadowCopy10\
预计得到以下输出:
目录: C:\Mounts
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----l 2024/1/4 13:47 HarddiskVolumeShadowCopy10
- 打开目录
C:\Mounts\HarddiskVolumeShadowCopy10
,你将看到卷影副本的文件系统视图,你可以在这里找回被覆盖或删除的文件。注意核对文件内容是否有损坏,卷影副本中的文件可能会出现以簇(4KB)为单位的连续静默损坏,这是卷影副本的一个严重bug所致,一定要注意核查文件内容!!但如果文件内容没有出现 4KB 为单位的连续0x00
或NUL
则通常没有问题。
卸载卷影副本
用完了建议卸载卷影副本。卸载很简单,无需打命令,直接打开资源管理器删除 C:\Mounts\HarddiskVolumeShadowCopy10
即可。
常见问题
挂载时提示 “找不到路径“\.\GLOBALROOT\Device\HarddiskVolumeShadowCopy10”,因为该路径不存在”:你要把
\\?
替换为\\.
,并在末尾补上一个反斜线文件复制出来是一大堆
0x00
或NUL
恭喜你,该卷影副本关于的这个时间点的文件的数据已经从硬盘上完全消失了,没办法找回它,这也就是为什么我说这玩意不靠谱也就救急用。关于这个问题,请详见这个讨论贴