我在哪里可以找到 Windows 上 64 位版本的 shell32.dll?

逆向工程 视窗 dll
2021-06-23 08:05:25

我正在尝试调试控制面板,我想反汇编shell32.dll. 因为控制面板是 64 位可执行文件,所以它会加载 64 位版本的 dll(与名称相反)。当我在调试模式下查看反汇编代码时,可以确认它确实是 64 位的。Ida 声称它位于C:\WINDOWS\system32\shell32.dll; 但是这个dll完全是32位的。我也检查过C:\WINDOWS\SysWOW64\shell32.dll,但它也是 32 位的。

有人可以解释这里发生了什么吗?

谢谢!

2个回答

您所看到的是 WoW 文件系统重定向的结果。当 32 位可执行文件请求 Windows 目录中的文件副本时,就会发生这种情况。由于 64 位结果对于 32 位可执行文件可能没有意义,因此您将获得 32 位副本。

如果使用资源管理器从system32目录复制文件,然后查看结果,会发现它是一个64位的可执行文件。

作为@彼得-费利说,32位进程将使用C:\WINDOWS\SysWOW64\shell32.dll替代C:\WINDOWS\system32\shell32.dll如果指定C:\WINDOWS\system32\shell32.dll

强制32 位进程使用实际的 64 位版本,您可以指定以下文件路径:C:\WINDOWS\Sysnative\shell32.dll

这为您省去了必须使用资源管理器复制 64 位 DLL 的麻烦。