我正在手动解析WOW64进程的PEB,以在其中加载模块,并且想知道为什么文件路径(FullDllName)指向模块的x64版本。
例如,ntdll.dll的文件路径(从WOW64 PEB中获取)指向System文件夹中的DLL,该文件将为x64 ntdll.dll,但是,我希望文件路径指向x86 ntdll。 SysWOW64文件夹中的dll?
为什么会这样?
答案 0 :(得分:-1)
在x64系统中,某些特殊目录和特殊注册表项分为两个单独的部分。对于文件系统,%systemroot%\system32
目录是为64位文件保留的,而32位文件则被重定向到%systemroot%\SysWOW64
目录。换句话说,所有32位程序通常只会出现在%systemroot%\SysWOW64
目录中。任何试图访问%systemroot%\system32
目录的32位程序都将被重定向到%systemroot%\SysWOW64
目录。这是默认行为,除非程序线程明确指定需要关闭重定向机制。
有时候,当您需要访问系统32文件夹时,您需要关闭重定向,因此MSDN提供了一组控制重定向的功能:
Wow64DisableWow64FsRedirection
MSDN提供了DEMO,您可以参考