在wow64进程中的x64模块?

4

我正在调试win7 x64上的一个小型32位进程,我看到它像预期一样加载了“C:\windows\sysWow64\ntdll.dll”,但也加载了“C:\windows\system32\ntdll.dll”。
我知道x64模块和x86模块不能混合使用,但在这里它们却混合在一起了。
为什么会这样呢?

1个回答

5
这是WOW64的一个特殊“功能”,请参见MSDN上的这篇文章。其中相关部分如下:
引自文章:
WOW64仿真器运行在用户模式下。它提供了32位版本的Ntdll.dll和处理器内核之间的接口,并拦截内核调用。WOW64仿真器由以下DLL组成:
- Wow64.dll 提供核心仿真基础设施和 Ntoskrnl.exe 入口点函数的thunk。 - Wow64Win.dll 提供 Win32k.sys 入口点函数的thunk。 - Wow64Cpu.dll 是一个抽象主机处理器特性的接口库。(仅限 Intel Itanium) - IA32Exec.bin 包含 x86 软件仿真器。(仅限 Intel Itanium) - Wowia32x.dll 提供 IA32Exec.bin 和 WOW64 之间的接口。 这些DLL以及64位版本的Ntdll.dll是唯一可以加载到32位进程中的64位二进制文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接