为什么WOW64 PEB中模块的文件路径指向模块的x64版本?

时间:2019-03-27 21:01:11

标签: windows winapi

我正在手动解析WOW64进程的PEB,以在其中加载模块,并且想知道为什么文件路径(FullDllName)指向模块的x64版本。

例如,ntdll.dll的文件路径(从WOW64 PEB中获取)指向System文件夹中的DLL,该文件将为x64 ntdll.dll,但是,我希望文件路径指向x86 ntdll。 SysWOW64文件夹中的dll?

为什么会这样?

1 个答案:

答案 0 :(得分:-1)

在x64系统中,某些特殊目录和特殊注册表项分为两个单独的部分。对于文件系统,%systemroot%\system32目录是为64位文件保留的,而32位文件则被重定向到%systemroot%\SysWOW64目录。换句话说,所有32位程序通常只会出现在%systemroot%\SysWOW64目录中。任何试图访问%systemroot%\system32目录的32位程序都将被重定向到%systemroot%\SysWOW64目录。这是默认行为,除非程序线程明确指定需要关闭重定向机制。

有时候,当您需要访问系统32文件夹时,您需要关闭重定向,因此MSDN提供了一组控制重定向的功能:

Wow64EnableWow64FsRedirection

Wow64DisableWow64FsRedirection

Wow64RevertWow64FsRedirection

  

MSDN提供了DEMO,您可以参考