Hash 当文件来自system32文件夹时,文件的散列值MD5和SHA256不同。为什么?
我通过在线散列生成器计算了notepad.exe和mspaint.exe的MD5和SHA256散列值。 我注意到的是,如果我计算两个exe在system32中的实际位置时,得到的值与放置在system32文件夹之外时的值不同。 这背后的原因是什么?哪个是正确的哈希值Hash 当文件来自system32文件夹时,文件的散列值MD5和SHA256不同。为什么?,hash,cryptography,window,group-policy,Hash,Cryptography,Window,Group Policy,我通过在线散列生成器计算了notepad.exe和mspaint.exe的MD5和SHA256散列值。 我注意到的是,如果我计算两个exe在system32中的实际位置时,得到的值与放置在system32文件夹之外时的值不同。 这背后的原因是什么?哪个是正确的哈希值 我正在使用软件限制策略阻止应用程序,我为notepad.exe(存在于SYSTE32文件夹中)文件创建了一个哈希规则并阻止了它。当我检查注册表中的哈希值时,它与通过其他方法(如在线md5计算器或Windows API)计算的note
我正在使用软件限制策略阻止应用程序,我为notepad.exe(存在于SYSTE32文件夹中)文件创建了一个哈希规则并阻止了它。当我检查注册表中的哈希值时,它与通过其他方法(如在线md5计算器或Windows API)计算的notepad.exe(来自SYSTEM32文件夹)的哈希值不同。但当我将notepad.exe文件复制到其他文件夹(比如桌面上)并计算散列值时,它与我为其创建规则的注册表中的值相同。因此,正确的值是我认为当文件从system32文件夹中取出时得到的值。但我不明白为什么会这样?它与权限有关吗?您确定要在不同的路径上检查完全相同的文件吗?我想你正在检查两个不同的notepad.exe。检查文件的大小。。。在字节上必须完全相同。
我刚刚在两个不同的路径上检查了我的notepad.exe,C:\Windows\System32和C:\Windows,它们是不同的。这是因为在64位Windows上运行的32位应用程序,以及Windows如何处理这些程序的System32文件夹 这也让我有一段时间发疯,因为我一辈子都搞不明白为什么System32中的某些文件(即.dll和.exes)会根据我检查它们的内容返回不同的哈希值 使用和Firefox上传一个文件来检查其散列,与使用在explorer.exe中运行的hash checker相比,我得到了不同的结果 但如果我将这些文件中的一个复制到另一个位置,那么我将在所有程序中得到相同的结果 同时,HxD显示复制文件的文件长度与System32中的不同,虽然两者显示相似的字节分布,但也存在显著差异 但后来我想在另一个文件夹上尝试同样的方法,最后在一个小朋友的帮助下破解了它 操作系统将%SystemRoot%\System32目录用于其 64位库和可执行文件。这是向后的 兼容性原因,因为许多遗留应用程序都是硬编码到 使用该路径。在执行32位应用程序时,WoW64透明 将32位DLL重定向到包含32位DLL的%SystemRoot%\SysWOW64 库和可执行文件 32位应用程序通常不知道 它们运行在64位操作系统上。32位 应用程序可以通过伪链接访问%SystemRoot%\System32 目录%SystemRoot%\Sysnative 因为HxD和Firefox(以及大多数其他浏览器)都是32位应用程序,当您将文件加载到它们中时,Windows实际上会透明地将它们重定向到SysWOW64文件夹中同名的文件(假设您运行的是64位浏览器,您不会遇到此问题) 类似地,当您将文件从System32复制到另一个位置时,explorer.exe作为一个64位进程,将复制原始System32文件,而不是(名称混淆)SysWOW64等效文件 因此,正如wiki所述,如果您输入
%SystemRoot%\Sysnative
在32位应用程序中打开文件对话框的路径中,它应该从realSystem32文件夹加载文件,并给出正确的结果
如果您检查SysWOW64目录中的文件,则所有文件都应返回相同的相应哈希值,而不管您使用什么方法打开它们
进一步阅读: