UxStyle: Out with the old, in with the new

Updated: UxStyle Core will be free.

images628442 About 9 years ago, when “Themes” emerged in Windows Whistler back in the day, I picked up a habit of modifying a system file called Uxtheme.dll unlocking the ability to use custom .msstyle files. As an alternative to retail software applications that provided identical functionality, I provided a free copy of my pre-patched file for tinkerers around the world. Jumping around from domain to domain, server to server, I managed to upkeep a repository of pre-patched Uxtheme.dll files and build up quite a following.

The theming engine in Windows has changed over the years. Patching of Uxtheme.dll went from being a simple overwrite of 5 bytes of code in one file to a complex multi-byte multi-file multi-architecture ordeal. The term “uxtheme patch” now usually applies to any/all files related to the “Theming engine” (e.g. themeui.dll, themeservice.dll, etc.)

The replacement of system files raises a number of servicing, code trust, and possible stability issues that everyone loves to ignore. Users can replace system files with malicious copies, non-functional copies, screw up folder permissions in the process, etc. A few years ago, I made it a personal goal to find an alternative.

In my quest to seek out an alternative, I came across a slew of software titles that patched the Theming engine, but in memory. This was clearly the way forward but digging deeper I discovered all these titles were broken in some way. TuneUp Utilities. for example, uses extremely elaborate system-degrading hooks to corner and patch copies and copies of files in memory. StyleXP, in competition with Stardock’s WindowBlinds, implemented a nicer method using a kernel driver but resorted to the use of “file version <-> offset tables” that had to be updated with every single change of the Theming engine (e.g. hotfixes, service packs, OSes), eventually leading to its downfall (it doesn’t currently work on Windows XP SP3).

A kernel driver writing guru friend of mine, Max, and I got together and decided we’d come up with a proper solution to this problem. Given the easier low-level access to Theming engine memory in kernel mode we decided it would be best to stick with a kernel driver. The whole point of our solution was to eliminate the need for human static disassembly/analysis of the Theming engine every time some files changed. We sat down and analyzed samples from Windows XP up to Windows 7 and wrote logic to perform what a human would do sitting in front of the PC.

As far as we know, we are the first to write a multi-platform (x86, amd64) disassembly engine that supports patching the Theming engine in Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, and Windows 7.

Say hello to UxStyle.

UxStyle is our solution consisting of a light-weight system service named Unsigned Themes, complimentary to the Themes service, and a kernel driver, sizing in at ~500k and ~17kb respectfully (beta builds). The service handles the enabling/disabling of custom theme support and the kernel driver handles patching. For 64-bit platforms, the kernel driver is signed with a digital certificate, as required by Microsoft.

To recoup the enormous amounts of time I personally invested in the Theming engine over the years, UxStyle cannot be made freeware. I understand this may upset a few people that cannot appreciate the countless hours and large sums of money we put into this project. With the formation of a Limited Liability Company (The Within Network, LLC) to protect our assets, payment of digital certificates, domains, hosting, electricity, food, gas, etc., this project has become quite costly. Think thousands of dollars. Really.

To make the transition from pre-patched files to our solution as easy as possible, I decided to split the product into two SKUs. There will be a Core and a Premium package.

UxStyle CoreUxStyle Premium
(may not be representative of final branding)

UxStyle Core will offer functionality closest to the pre-patched files as possible and will obviously be the cheapest of the two solutions. Current thinking is Core will be free about 4USD. I do plan on having a promotional launch event that will give away free copies and have an introductory first-month (or so) price of merely 99 cents.

UxStyle Premium will offer a tad more, including live/automatic updates (should we need to tweak the engine), additional code to correct the infamous “Windows Aero” theme name issue in the Appearance Settings window on Windows Vista/7, along with direct support from Max and I. Planning for the premium SKU hasn’t been finalized in any way. but the thinking along pricing is to mark it at about 8USD.

Both SKUs will be for the duration of your life, none of this subscription silliness. Licensing may be tied to a simple email address, details in this area aren’t available at this time.

We are currently trying to push for a release alongside Windows 7, near the 2009 holiday season. Whenever a release is made, I will officially end support for pre-patched files at that time. Don’t say I didn’t warn you.

To those that rely on my constant updates to keep their “patchers” up-to-date, we may offer licensing of the UxStyle engine. More on that later.

With that, I’m opening up for comments. Anything and everything is still open for change, so your feedback is greatly appreciated. Please keep all feedback constructive, however. Don’t go on a rant about how “this should be free”. Give me some concrete reasons. Put some thought into your replies, please.