Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does WoW64 emulation layer do?

enter image description here

All WoW64 apps go through WoW64 emulation layer.
I'd like to know what happen in this layer.(especially, how they can convert address space)

Please give me some important points.

like image 206
Benjamin Avatar asked Mar 16 '11 13:03

Benjamin


People also ask

What does WOW64 emulator do?

The WOW64 emulator runs in user mode. It provides an interface between the 32-bit version of Ntdll. dll and the kernel of the processor, and it intercepts kernel calls.

What is WOW64 in Windows 10?

WOW64 is a subsystem of the Windows operating system that enables 32 bit Windows-based applications to run on 64 bit Windows. WOW64 is a prerequisite for IBM® Tivoli® Monitoring. Beginning with Windows Server 2008 R2, WOW64 is an optional feature that you can uninstall.

What does WOW64 stand for?

Acronym. Definition. WOW64. Windows On Windows 64. Copyright 1988-2018 AcronymFinder.com, All rights reserved.

How do I run a 32bit program on Windows 10?

if it is a shortcut you can right click and choose "open file location". Then right click the program, then click properties then go to the compatibility tab. Then check the box next to "Run this program in compatibility mode for:". Then choose which OS version to run it in compatibility mode for.


2 Answers

Since you have already posted the diagram it is clear that you know why WOW64 exists. Now to answer your question:

I'd like to know what happen in this layer.

I think you want to know how it is implemented.

Process startup: The loader loads 64-bit user-mode part 'Ntdll.dll' as usual, but also loads 32-bit Ntdll.dll in case the process is for 32-bit execution. It is now the loaders responsibility to initialize using Wow64.dll, which sets up process and thread contexts in 32-bit Ntdll and 'switches the CPU to 32-bit mode' for execution.

System Call: Everything is now running in 32-bit mode, until a system call. We know that system calls go through Ntdll.dll, User32.dll, and Gdi32.dll etc; in this case the 32-bit versions. There is a separate 32-bit version of these libraries located in \Windows\Syswow64 bit folder. These are just stubs that instead of issuing 'native system calls,' actually call in Wow64.dll. Now, it's simple for Wow64.dll to transition to 64-bit mode, convert parameters to their 64-bit counterparts, issue the system call using 64-bit versions, get the result, and reconvert the output to 32-bit. It then transitions CPU back to 32-bit mode and returns the output.

Exception dispatching, user callbacks, file system and registry operations, and I/O is handled in the same way, using hooks somewhere down the line. Read the book prescribed below.

(especially, how they can convert address space).

64-bit address space is a superset of 32-bit address space. Plus, the same pointer (actually PTE) in 32-bit/64-bit isn't used to refer to the whole address space, but there are separate page tables for user-space and for system space.

Please give me some important points.

To know windows, the most important point I can give you is to read 'Windows Internals' -- Russinovich

like image 135
zamanbakshi Avatar answered Oct 07 '22 16:10

zamanbakshi


MSDN says:

WOW64 is the x86 emulator that allows 32-bit Windows-based applications to run seamlessly on 64-bit Windows. WOW64 is provided with the operating system and does not have to be explicitly enabled.

The system isolates 32-bit applications from 64-bit applications, which includes preventing file and registry collisions. Console, GUI, and service applications are supported. The system provides interoperability across the 32/64 boundary for scenarios such as cut and paste and COM. However, 32-bit processes cannot load 64-bit DLLs for execution, and 64-bit processes cannot load 32-bit DLLs for execution.

What specifically do you not understand? Have you already read the Wikipedia article on the WoW64 subsystem? I think you'll find that it provides a fairly comprehensive overview.

And Microsoft provides some additional details here: WOW64 Implementation Details

like image 28
Cody Gray Avatar answered Oct 07 '22 16:10

Cody Gray