【问题标题】:How windows calculates volume unique id?windows如何计算卷唯一id?
【发布时间】:2011-12-17 06:52:41
【问题描述】:

据我了解,Windows 驱动程序 (ftdisk) 为它在系统上找到的每个卷创建对象“HardDiskVolume”并为其创建注册表记录:

HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices\
\??\Volume{GUID} = BINARY_DATA

从那一刻起,卷被挂载为\??\Volume{GUID}

BINARY_DATA 用于将此驱动器映射到同一注册表配置单元中的\DosDevices\<DISK_NAME>,因此磁盘有字母。

BINARY_DATA 对于卷必须是唯一的,即使我将此磁盘放入另一台 PC 也不应更改,对吗?

我的问题是:

  1. 这里的 GUID 是什么?是每次windows启动时ftdisk生成的随机数吗?
  2. Windows 如何计算 BINARY_DATA?

我使用GetVolumeInformation 阅读了lpVolumeSerialNumber。它只是一个长整数,看起来不像BINARY_DATA

我相信BINARY_DATA 是来自lpVolumeSerialNumber 的函数(在格式化卷时由操作系统生成)和其他东西:

BINARY_DATA= F(VolumeSerialNumber, SOMETHING).

什么是东西?

我已经阅读了 MSDN 和 Russinovich/Solomon 的书,但仍然无法得到它..


哦,我找到了。

它说“注册表存储在基本磁盘卷驱动器号和卷名值中的数据是 Windows NT 4 风格的磁盘签名和与卷关联的第一个分区的起始偏移量”。

但是什么是“Windows NT 4 风格的磁盘签名”?

从这里: http://www.microsoft.com/resources/documentation/windowsnt/4/server/reskit/en-us/resguide/diskover.mspx?mfr=true

即“每个硬盘第一个扇区中的四字节磁盘签名”

所以我使用 HxD 工具并从我的 BINARY_DATA 中找到了这四个字节 我在 1B0 行和 08 到 0B 列找到它。

看起来互联网上还有一个人知道这件事: http://www.pcreview.co.uk/forums/image-copy-drive-wont-boot-properly-t3761034.html))

所以如果我更改磁盘上的 MBR,它会丢失它的字母:)

【问题讨论】:

  • 在答题框中发表你的答案,给自己加分吧!

标签: windows volume


【解决方案1】:

这要追溯到几年前,当时我在一家可以读写硬盘前 62 个扇区的公司工作。我们必须小心不要覆盖所有 62 个扇区,否则 Windows 激活会出现问题。通常好东西都存放在那里,但这并不是什么秘密。

在 FAT 上,MBR 之前的 62 个扇区肯定是“未使用”的,并且可供任何程序使用。我从下面链接的取证页面复制了文本,您会看到唯一标识符可能存储在前 62 个扇区中。取证分析人员可以使用注册表中的数据来确定您移除了硬盘,然后可以去寻找它。我认为标识符是由 Windows 以格式写在那里的。二进制数据是时间戳,是在格式上创建的,所有这些都是强有力的证据,您应该会发现二进制数据希望不会在某处的前 62 个分区上编码。

实际上是正确的,我确实找到了!这个 WinHex 就是炸弹!您想在其中一个物理驱动器(非逻辑驱动器)上从 0 读取到 (62*512)。我认为除了可能激活之外您不会遇到任何问题,但这是一个老问题,我相信他们停止了,因为人们现在经常在他们崩溃时更新他们的 SSD。

来自http://www.forensicfocus.com/a-forensic-analysis-of-the-windows-registry

Windows 注册表的取证分析

Derrick J. Farmer Champlain College 佛蒙特州伯灵顿 dfarmer03@gmail.com

已安装的设备

注册表中有一个键可以查看每个 与系统关联的驱动器。关键是 HKLM\SYSTEM\MountedDevices 并存储已安装卷的数据库 由 NTFS 文件系统使用。每个二进制数据 \DosDevices\x:值包含用于识别每个卷的信息。 这在图 7 中进行了演示,其中 \DosDevice\F: 是已安装的 卷并列为“存储可移动媒体”。

图7卷\DosDevice\F的标识:

此信息对数字取证检查员很有用,因为它 显示应连接到系统的硬件设备。 因此,如果某个设备显示在 MountedDevices 列表中并且 设备实际上不在系统中,这可能表明用户 移除驱动器以试图隐藏证据。在这种情况下, 考官会知道他们有额外的证据需要 没收。

扇区 1-62 引用自
http://www.beginningtoseethelight.org/fat16/index.htm 扇区 1-62(> =31,744 字节)

扇区 1 - 62(含)通常为空。应用程序 使用它包括:多引导加载程序,如 ranish 高级引导 经理。安全程序,例如 reflex-magnetics disknet。病毒 将自己复制到主引导记录中,以便它们可以加载 每次,有时将真正的 mbr 移动到这个区域,再加上更多 病毒代码。全盘加密程序和磁盘转换 用于超大硬盘的软件也可能驻留在此处。

【讨论】:

  • 非常好的信息,非常感谢。但是“windows如何计算volume unique id?)”
【解决方案2】:

这是Wikipedia的(主要部分)答案:

"序列号是一个32位的数字,由日期和时间决定 在当前计算机上的实时时钟上在磁盘的时间 格式化。”

【讨论】:

  • 这是完全错误的。问题是询问 GUID 而不是卷序列号。
【解决方案3】:

首先,GUID 是 GUID。它们只是一个随机生成的数字序列,重复条目的可能性非常低。我怀疑每次 Windows 启动时都会生成它,尽管我承认这是可能的。我从来没有注意到它发生了变化,因为我没有经常看到我的硬盘的 GUID

另外,您是否尊重 lpVolumeSerialNumber?如果没有,您可能会得到一个内存地址。 "lp" == "Long Pointer to..." 的匈牙利表示法 卷序列号本身看起来像一个 DWORD,一个 32 位整数

【讨论】:

  • 这不是问题的答案。顺便说一句:我见过一些体积指南,它们只有几个数字不同,或者有 3 个带有“0000”的块。所以这个volume-guids显然不是随机生成的。
猜你喜欢
  • 2011-03-29
  • 2011-03-17
  • 1970-01-01
  • 2011-09-13
  • 1970-01-01
  • 2019-05-05
  • 2021-02-27
  • 2018-03-07
  • 1970-01-01
相关资源
最近更新 更多