Running x86 apps on Windows RT devices

surface

Windows RT, the version of Windows being loaded onto ARM-powered tablets and netbooks such as the new Microsoft Surface, has one drawback: there are tens of thousands of apps written for x86 hardware that simply won’t run on this new ARM-powered architecture. While this may present a problem for hospitals, banks, and other institutions needing a proper Wintel platform, we’re wondering how to get classic games such as Civ III and Age of Empires running on these new tablets.

It seems with a lot of black magic, [mamaich] over at the XDA Developers forum has a solution for us. He’s created a tool for running x86 Win32 apps on Windows RT. Basically, he’s created an x86 emulator for ARM devices that also passes Windows API calls to Windows RT.

So far, [mamaich] has been playing some classic Windows games on his Windows RT box, including Heroes of Might and Magic 3 and Space Cadet Pinball from Windows 95. A few utility apps such as 7Zip and WinRAR also work.

[mamaich]‘s plans for his build are to make x86 emulation more automatic without the need for a separate launcher tool. Then, finally, we’ll have the perfect portable platform for RTS games.

Unsigned code running on Windows RT

unsigned-code-on-windows-rt

A crack has been found in the armor of Windows RT. This subset of Windows 8 is designed to run on ARM processors. The payload listed in the image above allows you to run unsigned desktop applications on the OS.

We haven’t seen very much about the Windows RT package, so it’s nice to hear [Clrokr's] thoughts on it. As far as he can tell the system has not been watered down from its Intel-aimed (x86) counterpart. Rather, RT seems to be a direct port with what is called “Code Integrity” mechanisms switched on. There is a kernel-level setting, barricaded behind UEFI’s Secure Boot, which determines the minimum software signing level allowed to run on the device. This is set to zero on a Windows 8 machine, but defaults to 8 on an ARM device. [Clrokr] uses a debugger to insert the code seen above into a DLL file in order to reset that minimum signing value to 0.

Do you have a project in mind for which this is useful? We’d love to hear about it in the comments!

[via Reddit]