Den Delimarsky

I am an engineer working on API documentation, security and machine learning.

github twitter linkedin rss

Access blocklisted apps in the Windows Phone emulator

Aug 5, 2011
4 minutes read

As you probably know, the Windows Phone SDK comes with an emulator that is locked down to the maximum – the developer only has access to Internet Explorer and to a limited number of settings. However, today I found out an indirect (and maybe not that optimal) way to access various applications that are blocklisted, but are still available on the device.

My journey started with XdeLauncher – a tool bundled with the Windows Phone SDK that facilitates the launch of the Windows Phone emulator. I wasn’t sure how exactly it works because it didn’t seem like it was invoking xde.exe. That also meant that it didn’t pass any custom parameters to it. In fact, parameters were there:

Image lost since old blog.

So there is Windows Phone 7 and Windows Phone Emulator. This doesn’t tell me anything, so I proceed to launch Reflector and look at what this XdeLauncher does. I was not surprised to see a reference to the Microsoft.SmartDevice.Connectivity. Justin Angel was talking about it when he was automating the emulator/device, so it was only logical that it was the connection point here as well.

On my PC, this assembly was located at (obviously, the GAC folder):

c:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SmartDevice.Connectivity\ 
v4.0_10.0.0.0__b03f5f7f11d50a3a\Microsoft.Smartdevice.Connectivity.dll

There is one method in particular that interested me there – GetApplication. If I pass an application GUID to it, I am able to launch it (as well as perform some other file manipulations). That’s all I needed at this point. For testing purposes, I put together this piece of code:

DatastoreManager manager = new DatastoreManager(CultureInfo.CurrentCulture.LCID); 
IEnumerable<Platform> platforms = manager.GetPlatforms(); 
IEnumerable<Device> devices = platforms.First().GetDevices();

Device d = devices.Last(); 
d.Connect();

d.GetApplication(new Guid("APP_GUID")).Launch();

NOTE: This is not production code. In my case, devices.Last() returned the emulator instance. You need to make sure that the operations are performed on a correct device, even though the applications will still launch on the phone (if connected).

So here is where the fun began. I got some system application GUIDs and tried passing them to the method to try and launch existing applications. So here goes.

Calculator

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5603

Image lost since old blog.

About

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5605

Image lost since old blog.

An interesting moment worth mentioning here is this – resetting your phone through this dialog won’t yield the result you are probably expecting. Basically, you will reboot the emulator with a complete data wipe as a bonus.

Phone Lock Settings

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5607

Image lost since old blog.

Also worth mentioning here – the timeout for the screen doesn’t work in the emulator exactly as it does on a physical device. If you define a plausible timeout for the emulator, you will lock the screen completely – it will stop responding to any feedback and you will have to restart XDE to continue working with it.

If you decide to execute code in the emulator while the screen is “frozen”, you will get this error:

Image lost since old blog.

Message Hub

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5610

Image lost since old blog.

Not exactly new, since SmsComposeTask also gets you close to this place.

Call History

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5611

Image lost since old blog.

Also not exactly new, since I already was able to access this through an active call.

Calendar

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5612

Image lost since old blog.

Account Manager

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5616

Image lost since old blog.

SharePoint Mobile

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA561A

NOTE: Currently throwing an error at launch.

Image lost since old blog.

Cellular Network Settings

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA561F

Image lost since old blog.

NOTE: Very interesting – multiple test networks that can be used to test the phone capabilities. Also useful when checking for a data connection. Look at the network icon in the status bar for details.

Image lost since old blog.

Bluetooth Settings

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5620

Image lost since old blog.

Airplane Mode

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5621

Image lost since old blog.

This will actually work, and the emulator will be set to Airplane Mode, disconnecting from all networks:

Image lost since old blog.

Office Mobile Settings

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5622

Image lost since old blog.

WiFi Settings

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5623

Image lost since old blog.

Speech Settings

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5624

Image lost since old blog.

Zune

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5630

Image lost since old blog.

Pictures

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5632

Image lost since old blog.

Games

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5634

Image lost since old blog.

Device Update Settings

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5640

Image lost since old blog.

And that’s about it. For a lot of the applications described above, it is worth experimenting with them to find the possible effects on general OS behavior. This is a more “I know how to do it” approach because if you have a physical device, you don’t need any of these capabilities because you can experience them first-hand.

But what about Microsoft Office?

Microsoft Office apps in the emulator image seem to be locked down, so currently you cannot access them the way I described above.


Back to posts