Pwn16

Pwn16 (also referred to as Pwn64 or Pwn16/64) was the codename for an in-development Win64 compatibility layer that aimed to bring support for the 16-bit Windows subsystem on 64-bit Windows PCs by means of software emulation.

If it had been successfully developed, the user would have the option to either use it directly or use it via a that loads it automatically where Windows would normally output an error message. What happens when used directly has not been determined yet but when accessed through the stub loader, Pwn16 would automatically invoke the QEMU emulator and boot an emulated Windows environment in the background with an image of the 16-bit program in memory.

History
On February 3, 2012 WindozeNT announced to the other developers that he was planning to create a program that would re-add 16-bit application compatibility for 64-bit systems running Windows. Executing 16-bit programs was natively supported on 64-bit systems but was specifically blocked by Microsoft in Windows' core. Several ways of getting around this were proposed by both WindozeNT and Fire219.

WindozeNT suggested that the compatibility layer would ask what OS the program ran, downloaded a specialized version of that OS, boot it in the QEMU emulator then upload the program files to the new VM. Then it would show the emulator with the program running.

Fire219 suggested rewriting the NTVDM (NT Virtual DOS Machine) emulator supplied by Microsoft in Windows XP into an Intel 8086 emulation driver that allowed "native" execution of the application in question. He also suggested using a stub loader that intercepts the error message seen when trying to run a 16-bit app on 64-bit Windows. WindozeNT disagreed to the driver idea due to its generally low-level complexity and instead decided to use the original QEMU-based idea combined with Fire219's stub loader suggestion. The final result was the project codenamed "Pwn16".

Pwn16 For Win32
Pwn16 was going to be developed exclusively for 64-bit systems. However, a 32-bit version called Pwn16 For Win32, Pwn16/32 or Pwn32 was also proposed for 32-bit versions of Windows in hopes of overcoming the "No Direct Hardware Access" limitation coexisting in the official Microsoft-supplied emulator. WindozeNT said that Pwn32 could be used in place of that emulator. Additionally, Pwn16 For Win32 will include a configuration setting to turn itself off completely when and if a user wanted to use Windows On Windows for emulation instead.

Just a day after the announcement of Pwn16, WindozeNT also introduced the idea of having a 32-bit PC run 64-bit programs. This feature would have been implemented in Pwn16 For Win32.

Problems regarding drive access
Upon the decision of making software run in a simulated environment within an emulator, WindozeNT realized that certain, if not all, applications would not have any access to the drive it came from nor anything else that existed outside of the emulator. Thus, it would be sandboxed to the emulated system drive in the fake Windows environment. This would result in a heavy loss of seamlessness that NTVDM offered on Win32.

To work around this, WindozeNT would have made the underlying QEMU emulator and the emulated OS act in such a way that the software could only access the physical drives Pwn16 mounts. Updates to the core will be applied using a specialized version of WindozeNT Updater residing in the now hidden system drive.