5,604,443 Members 48,297 Now Online
XDA Developers Android and Mobile Development Forum

[Q] Hacking Windows RT to Run Desktop Apps?

Tip us?
 
revxx14
Old
#1  
revxx14's Avatar
Senior Member - OP
Thanks Meter 60
Posts: 315
Join Date: Feb 2011
Location: Chicago
Default [Q] Hacking Windows RT to Run Desktop Apps?

Obviously no one has a had a chance to try this yet, but will there be an effort to hack Windows RT to enable more desktop applications? I really don't care about the desktop, but there's one tiny utility that would be extremely useful. I use a program from Microsoft called "Mouse Without Borders" to control two computers with one keyboard and mouse. I'd love to do this on the Surface RT I'll be buying, but of course because it's a desktop application, I probably won't be able to.
Phone: Nokia Lumia 920, Cyan, Windows Phone 8.0.70211.04, Developer Unlocked
Tablet: Microsoft Surface with Windows RT, 32GB (64GB MicroSD) with cyan Touch Cover
The Following 2 Users Say Thank You to revxx14 For This Useful Post: [ Click to Expand ]
 
phailyoor
Old
#2  
Senior Member
Thanks Meter 19
Posts: 123
Join Date: May 2012
Quote:
Originally Posted by revxx14 View Post
Obviously no one has a had a chance to try this yet, but will there be an effort to hack Windows RT to enable more desktop applications? I really don't care about the desktop, but there's one tiny utility that would be extremely useful. I use a program from Microsoft called "Mouse Without Borders" to control two computers with one keyboard and mouse. I'd love to do this on the Surface RT I'll be buying, but of course because it's a desktop application, I probably won't be able to.
Compiling desktop apps for ARM using VS 2012 gives an error message, but it can be bypassed. Not sure if the results will run in Windows RT though.

Of course there's no way to find out until Windows RT devices are released to the public, because everyone who has access to one is under NDA. Have some patience.
The Following User Says Thank You to phailyoor For This Useful Post: [ Click to Expand ]
 
Pseudonym117
Old
#3  
Member
Thanks Meter 48
Posts: 58
Join Date: Dec 2011
Location: Crystal Lake
for what you are suggesting, i believe it is technically either impossible or reliant on an emulator. since windows RT is for ARM processors and normal windows is for x86 processors, instructions would need to be converted from x86 to ARM in order to be used. this would be the job of an emulator, which would most likely not be able to be integrated deeply enough in the OS to do what you are talking about. even if it was, it would run slower than optimal.

now if microsoft releases the source code for their application (very unlikely), its an entirely different story. then the code can be recompiled for an ARM processor, making anything possible.

someone correct me if im wrong, but i believe im correct.
 
lseidman
Old
#4  
lseidman's Avatar
XDA TV Producer
Thanks Meter 91
Posts: 229
Join Date: Jun 2011
Location: Las Vegas

 
DONATE TO ME
Quote:
Originally Posted by Pseudonym117 View Post
for what you are suggesting, i believe it is technically either impossible or reliant on an emulator. since windows RT is for ARM processors and normal windows is for x86 processors, instructions would need to be converted from x86 to ARM in order to be used. this would be the job of an emulator, which would most likely not be able to be integrated deeply enough in the OS to do what you are talking about. even if it was, it would run slower than optimal.

now if microsoft releases the source code for their application (very unlikely), its an entirely different story. then the code can be recompiled for an ARM processor, making anything possible.

someone correct me if im wrong, but i believe im correct.
As someone who has one of these devices, I can't say much more other than it will not happen, I am sorry. You'll need to start barking at the developer to make a ARM Compatible App... Not likely it will happen as the API's are very different.
 
phailyoor
Old
(Last edited by phailyoor; 30th September 2012 at 09:25 PM.)
#5  
Senior Member
Thanks Meter 19
Posts: 123
Join Date: May 2012
Quote:
Originally Posted by lseidman View Post
As someone who has one of these devices, I can't say much more other than it will not happen, I am sorry. You'll need to start barking at the developer to make a ARM Compatible App... Not likely it will happen as the API's are very different.
You have an ARM device? If so, can you say 100% that there is no way to target win32/desktop using new code? It would be great to know for sure. I know it's possible to compile desktop code that targets ARM, producing a certain mystery executable. The only question is, will it actually run?
 
xanderkaiber
Old
#6  
Member
Thanks Meter 3
Posts: 35
Join Date: Sep 2008
Location: Bath
I have an arm device running WindowsRT. I compiled a HelloWorld for arm no problem in VS2012.

Unfortunately it will not run. Get 'Windows cannot verify the digital signature for this file'

If anyone knows a workaround to this we might be able to get it working
 
Pseudonym117
Old
#7  
Member
Thanks Meter 48
Posts: 58
Join Date: Dec 2011
Location: Crystal Lake
Quote:
Originally Posted by xanderkaiber View Post
I have an arm device running WindowsRT. I compiled a HelloWorld for arm no problem in VS2012.

Unfortunately it will not run. Get 'Windows cannot verify the digital signature for this file'

If anyone knows a workaround to this we might be able to get it working
well the simple way would be to sign it. HOW to sign it is a completely different problem... there may be a group policy change or registry edit to turn off signature verification, but i am not familiar with windowsRT at all.
 
danchar4
Old
#8  
Member
Thanks Meter 9
Posts: 53
Join Date: Feb 2011
Location: Seattle
Quote:
Originally Posted by phailyoor View Post
You have an ARM device? If so, can you say 100% that there is no way to target win32/desktop using new code? It would be great to know for sure. I know it's possible to compile desktop code that targets ARM, producing a certain mystery executable. The only question is, will it actually run?
How did you bypass the error message in VS2012? Can you share the exact steps you took to bypass the error as well as your mystery executable here so that folks who are under NDA and have early access to the ARM devices can try it out?

Since Office RT is a desktop app, one can only assume all of this is possible.
 
GoodDayToDie
Old
#9  
Recognized Developer
Thanks Meter 2481
Posts: 5,310
Join Date: Jan 2011
Location: Seattle
Windows RT is basically just Win8 recompiled for ARM, with one major exception: EXE files need to be signed by Microsoft before they will run. This means that MS can release desktop apps just fine - they have the signing keys, after all - but third-party software can't run by itself (as a desktop app) and will need to be bundled as an .APPX file (Metro-style app bundle).

If you want to try bypassing the signature check, there are a few things you could attempt. One would be to create your own signing certificate, install the public key in the OSes root code signing cert store (not the per-user store, though it qprobably wouldn't hurt to install it there too), and then sign your test apps with that cert. MS *probably* used certificate pinning - where a specific cert is used, rather than just any cert present in the OS of sufficient trust level - but they may not have, too. Alternatively, you could try looking for some legacy or debug functionality to disable the code-signing. Finally, you coul try using a built-in program, rundll, to invoke your applications.

I can't test any of this right now, because I don't have an RT device. There's a lot of research on them that I want to do, though.
Win8/Windows RT projects:
List of desktop apps for hacked RT devices

WP8 projects:
Native Access WebServer and Libraries
WP8 Interop Unlocks
Storage Cleanup tool

WP7 projects:
XapHandler, Root Webserver, OEM Marketplace XAPs, Bookmarklets collection (Find On Page), Interop-unlock hacks.


Do not private message me with questions that should have been posted on the forum! Not only are you wasting your time - I'm not going to bother writing an answer to such a question for only one person - but I will probably block you from PMing me in the future as well.
The Following 3 Users Say Thank You to GoodDayToDie For This Useful Post: [ Click to Expand ]
 
mamaich
Old
#10  
Recognized Developer
Thanks Meter 208
Posts: 1,150
Join Date: Apr 2004

 
DONATE TO ME
Quote from one very old MS Windows 8 document, from those times when windows RT was called "woa" (2011). Everything could have changed from those days.
Quote:
Description of the change:
WOA platforms will require that all desktop binary images be signed with a trusted Microsoft certificate. Any unsigned code will fail to load. This document describes the technical steps required to enable unsigned test, development, or manufacturing applications to run. This document does not cover Metro Style applications for which there is a separately documented signing requirement and developer licensing.
Action required
In order for any test binary or tool to run on WOA platforms you must do one of the following:
· Register the install location of your test binaries as an exclusion path, OR
· Attach a Kernel Debugger and disable checking by setting the appropriate registry value
...cut...
2. Scripts - Scripts will be allowed to run if the script host (e.g. cscript.exe, cmd.exe, etc.) is Microsoft signed or is run under an exclusion path.
...cut...
How to register your test binaries in an exclusion path
...cut...
Exclusion paths are listed in the following registry key in REG_MULTI_SZ format:
Key: HKLM\SYSTEM\CurrentControlSet\Control\CI\TRSData
Value: TestPath
Paths added to this key should be in one of two formats:
1. Path (recursive): \Program Files\TestAutomationPath
2. Binary (specific): \Program Files\TestAutomationPath\mybinary.exe
Note: Do not include the drive letter of the volume. Each path will be excluded across all volumes.
...cut...
The following paths are restricted and cannot be added as an exclusion:
1. \
2. \Windows
3. \Windows\System32
4. \Program Files
...cut...
How to disable signature verification with an attached Kernel Debugger
To disable signing verification when a Kernel Debugger is attached the “DebugFlags” value must be deleted from the “HKEY_LOCAL_MACHINE\System\CurrentControlSet\Contr ol\CI” registry key and the system must be rebooted. After this Signing Verification will not take place.
This can be scripted by putting the following in a .cmd script and executing with admin privilege:
cmd /c reg delete "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Contr ol\CI" /v DebugFlags /f
shutdown -r -t 0
...cut...
Note: Enabling Kernel Debug will not be allowed by default on machines with Secure Boot enabled. Either Secure Boot will need to be disabled, or during boot the F8 menu selection to EnableDebugging must be chosen.
...cut...
At a later point, changes will be made to Windows 8 builds which will enforce that only machines configured as “Debug System” will support exclusion paths.
A “Debug System” is will initially be identified by the presence of the Microsoft Test Signing CA in the UEFI signature database (“db”).
...cut...
Note: If there is a need to run unsigned tools, the system can be configured as a “Debug System” during manufacturing but there must be a step in the production process that removes the Microsoft Test CA.
Production machines must not ship with the Microsoft Test CA in the db.
First we need to get hands on ARM device. I'd recommend Qualcomm-based, as chinese friends regularly leak their docs/sources. MS Surface is Tegra-based, so don't buy it
...

The Following 2 Users Say Thank You to mamaich For This Useful Post: [ Click to Expand ]
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes