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

问题描述 投票:0回答:1

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

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

为什么会这样?

windows winapi
1个回答
-1
投票

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

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

Wow64EnableWow64FsRedirection

Wow64DisableWow64FsRedirection

Wow64RevertWow64FsRedirection

MSDN提供DEMO,您可以参考

© www.soinside.com 2019 - 2024. All rights reserved.