![我如何知道应用程序是否读取了我的硬件指纹?](https://linux22.com/image/1373797/%E6%88%91%E5%A6%82%E4%BD%95%E7%9F%A5%E9%81%93%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E6%98%AF%E5%90%A6%E8%AF%BB%E5%8F%96%E4%BA%86%E6%88%91%E7%9A%84%E7%A1%AC%E4%BB%B6%E6%8C%87%E7%BA%B9%EF%BC%9F.png)
我想知道(出于安全和隐私原因)某个 Windows 7 桌面程序是否真的读取了我的硬件指纹,包括硬盘序列号、CPU 序列号或任何其他可用于识别特定计算机的唯一信息(例如 Windows 产品 PID)。Process Monitor 可以做到吗?如果可以,怎么做?如果不可以,我可以使用其他程序或方法来查找吗?
答案1
作为一名程序员,我无法想象这样的程序会存在,甚至可能存在。我来解释一下原因。
没有单一的硬件 ID;相反,正如您所说,有各种其他唯一标识符可用于构建唯一的配置文件(非常类似于在线广告商通过收集网站访问等单独的信息来构建配置文件)。
任何程序都可以读取部分或全部信息(尽管存在访问限制),并且任何给定程序(或更具体地说,其开发人员)认为足够独特的东西都是任意的。一个开发人员可能认为 Windows PID 就足够了,而另一个(*咳嗽*微软*咳嗽*)会使用几个。实际上没有办法确切知道程序何时获取硬件指纹。程序可以访问几乎任何这些信息位是有正当理由的,因此很难确定它是在获取指纹还是只是在做一些工作。
话虽如此,可以可以检测到指纹尝试启发法例如,您可以检测某个程序是否尝试(或有代码)读取多个唯一数据。如果是这样,那么您可以告知用户,让他们决定它是试图获取系统指纹还是只是在工作(就像反恶意软件程序必须允许用户对可能可疑但无法证明有罪的软件行为做出决定一样)。当然,即便如此,读数也可能分散,因此更不可能被检测到。
您可以手动观察程序,但没有工具可以监视和记录对程序可以读取的每一种唯一信息的访问(事实上,可以想象它可以使用唯一的唯一标识信息(即,不为人所知或通常以此方式使用的信息)。
(我不禁思考,使用虚拟机是否可以更好地读取指纹识别尝试,尤其是使用像 ReactOS 这样的自定义操作系统……)
总之,没有万无一失的方法可以知道程序何时对系统进行指纹识别。您可以尝试观察对常见信息的访问,但这无论如何都不能保证检测到指纹识别的尝试。
如果您对某个程序有疑虑,最好的办法就是研究该特定程序,看看其他人是否已经发现它需要系统指纹(就像 Windows WPA 的解析方式一样),或者至少发出警告,以便安全专家可以反汇编代码、进行分析并找出原因。