Thoughts On The Microsoft Store

The Microsoft Store is a relatively new store for Windows applications run by Microsoft.

You might say it is a Microsoft hosted download site, but it is more than that. Software applications have to be what Microsoft calls Universal Windows Platform (UWP) apps before they can be added. UWP apps use a whole new framework.

Fortunately Microsoft provide a desktop bridge to allow older WinForms and WPF software applications to be wrapped up in a suitable form for the store.

The advantages of having an app in the store is that Microsoft will provide the functionality for updates, credit card processing and licensing. It can take some time to write this functionality yourself and get it right.

The thing is that the Microsoft Store is only for Windows 10. If you are writing business software, you need to support Windows 7 and 8. So you will already need to have your own licensing code, update code, the means to prevent your software being reverse compiled and purchasing code.

In the short-term, you will have to have two versions of your software. One for the Windows Store and for selling outside of the store. All diversions from the real business of adding functionality.

Why did I choose to write about the Microsoft Store today? Well I saw an article on download.com concerning Microsoft slashing their cut of revenue from 30 to 5%.

Summary Of Software I Like

If you publish software written in Microsoft’s .NET, you should definitely look at the code obfuscator Babel For .NET. Unlike some other ones, it is affordably priced and full of features. I’ve had my software reverse compiled and hacked in the past, before I found out about Babel, and most certainly you want to close the door before the horse bolts. The author of Babel has done the world of software developers a huge favour by producing this work.

Axialis IconGenerator is a good tool to generate icons for Windows and Apple Macs. Its separately downloaded object packs are full of high quality icons, which really get you off to a good start.

Nicepage is new software (as of 28 February 2019) and has helped me get a website designed quickly. It generates HTML pages, as well as themes for Joomla and WordPress. I haven’t kept up with HTML, CSS and responsive web design (web pages adjusting to the smaller screens on smartphones) and so I can no longer hand-write a web page today that looks acceptable. That is where Nicepage comes in!

When I am writing sofware or collaborating with other authors, finding out how one text document differs from another is really useful. Comparing two folders of source code files to see all the changes is again really useful. TextDiff has helped me a lot. I can’t recommend it enough. It has saved me hours of time.

Now What Has Changed In My Source Code?

Back in the days, Microsoft Visual Studio came with a nice little tool called WinDiff. Everytime I created a new release of software, I would run WinDiff and compare the current source code files with the ones for the previous version. I would see all the changes I made. Likewise in a company a manager could review all the changes an employee has made.

I did this to check to see what exactly I had done and so I could review all the new code I had written for mistakes.

Well eventually Microsoft in their wisdom removed WinDiff from Visual Studio. So what’s a programmer to do now?

I’ve found a nice little replacement for WinDiff called TextDiff available from the website https://compare-text-files.com/. I just point it to my current set of files and to my old ones and it runs along and points out all the new files, the removed files and the changed files. For each pair of modified files, I can double-click the entry and it automatically does a “diff text” on them. It works like magic. I even reordered some class methods and it dutifully picked out they were rearranged rather than newly added. I can’t recommend this enough. It has saved me hours of time.

It seems full of hidden features. I also managed to compare a pair of Microsoft Word documents, although it only seems to compare the text part of them.

It has a lot of very useful options. Its ability to just show the differences and leave out the unchanged text is really very useful. If you just want to see the differences and nothing else, then this software utility is worth its weight in gold!

.NET Obfuscation, Reverse Compilation and Software Theft

I first started writing software in .NET over ten years ago. Now as you know .NET software can be reverse compiled back to almost the original source code. The names for local variables will be replaced by unfriendly one letter equivalents, but the class and methods names will be intact. The ease of reverse compilation for code written in .NET was never seen for C/C++ when compiled into native machine code.

Back then I used a free obfuscator to rename all the class and method names into unfriendly single and two letter substitutes. For example a class called MyPowerAlgorithm would be renamed to Aa.

I wrote my own licensing system so that users would have to buy a license key from me in order to use the software. I looked around at the time and I didn’t want to pay 5% of my revenues to use a third party licensing system.

I put in some simple protection so that a hacker would not be able to reverse compile my code and re-sell it.

Well that didn’t work at all. Obfuscating the class and method names of a software application written in .NET only goes so far. You need extra protection and I found out the hard way.

One day I found a software application on the Internet rather similar to mine. In fact the user interface was different. It looked very much like some one had reverse compiled my code, changed a few constants and put a simple, crude new user interface on it. Rather annoyingly Google put the cracker’s website one above mine in search results!

At the time there was one bug in my software application. I checked the cracker’s application had the exact same obscure bug as mine. Plus the fact the reports it generated looked very similar to mine, with the exception of one string being changed.

I contacted the man responsible for stealing my software application and told him that I suspected him of stealing my code. I referred him to my website and said we both had applications that did the same thing. I asked him how he managed to do the same technical tricks as in my application. He didn’t have a clue how to answer my questions. In the end he kind of admitting stealing my code. He said that he had done the work to create a new website and from that he was entitled to some money! Ho Hum!

I contacted the website hosting company where the cracker’s website was. Fortunately they believed me and took his website down. Well a couple of days later, the cracker’s website was back up with my stolen code and with a different hosting account at the same company. Well after contacting them again, they took the new website down. After that he moved my stolen code to a new website with a new hosting company. I contacted them and they took his new website down.

I was lucky. The hosting companies took my word and didn’t say things like “Who can we believe?”. The proof would be in the possession of the real, unobfuscated source code, but really you don’t want to have to reveal that.

The take-home message is that you want your software application properly protected before you publish it, not aftewards. Obfuscating your application is not enough. You need to do more to protect it. You need technical means to protect your software. Legal means are too slow and too expensive and might not even work if the cracker is in a country far away.

Needless to say I added more protection to my software application after this event. In some ways I resent having to write code to do this, instead of code for more features.

Having thought about it, it is very simple to crack software applications only using obfuscation for class and method names.

I have found three obfuscators offering more functionality that the free one I used nearly a decade ago. They are listed below. Good luck using them!

PreEmptive Dotfuscator seems to be for more established software outfits, but that is just my opinion. ConfuserEx is a free Open Source application. BabelFor.NET looks very full-featured and powerful.

More Software Recommendations

I’ve been writing software for decades. For the first software products I published, I hand-wrote the HTML for the web-pages myself. Over the years, web-pages became better looking and more sophisticated. The specifications for HTML grew and grew and then they added CSS (cascading style sheets).

Eventually someone pointed out to me, my website was looking rather amateur and was letting my actual software product down. The software I write is written in C/C++ and I only had a rudimentary knowledge of HTML.

So what was I going to do? I didn’t want to pay someone else thousands of Euros to create a website for me. For one, I couldn’t easily afford the money and secondly I wanted to retain control. I wanted the ability to update the website, whenever I wanted and without having to deal with another person wanting to get paid for every time.

So I used the Open Source package Joomla to create a website for me. Well it look marginally better, but still it looked plain.

I found a product called Artisteer. It created a template for me. A template is something that makes a plain looking website, look cool and fancy i.e. it contains the colour scheme, the icons, the borders, the gradients, the styles etc.

Over the years, the company producing Artisteer created two other products. One is called Thelmer and the other Nicepage. I have never used Thelmer, but I have used Nicepage. Nicepage is a webpage and theme design tool. Artisteer is for creating themes for the older style of web-sites. Nicepage is meant for the latest style of websites i.e. longer web pages divided up into sections.

With Nicepage, you can add pre-made sections to a web-page and then customise them. To sections, you can add grids and contains. Nicepage can either create stand-alone web-pages for you or a zip file you can import into Joomla, that contains your menu, articles and theme.

Nicepage isn’t like WordPress. It needs a little more work and technicial knowledge, but if you are prepared to put a bit more effort in you can be rewarded with a unique looking website, where you can have exactly what you want.

For my software product I needed a pre-made features box. Nicepage provided it. I also needed professional looking icons. Nicepage provides lots and lots of those. You just type in keywords for your icons and pictures and Nicepage will bring up a selection for you. It will also recolour and change the style of the icons you select.

As of today (17th February 2019), Nicepage is recently released software.

The Journey Begins

I’ve recently published a Windows software application and I wanted to recommend some tools that helped me get the software in a form ready for the world to see! I am not affiliated with these companies in any way, but I was impressed with their software and I wanted to tell the world.

I can program in C/C++, but when I comes to graphics and design, I have far less ability. I used Axialis IconGenerator to create the icons used by my software application and also for the website where it is published.

Axialis’s website has a lot of so-called object packs for IconGenerator, which can be downloaded separately. I downloaded about seven of them. For the first iteration of my website, I practically used the graphics in the object packs as-is. Their objects are very high quality and in some cases, far higher than I’ve seen anywhere else.

However their software is much more than just reusing graphics. With IconGenerator you can combine individual, already created graphics, change colours, add text, add shapes, add special effects etc. Axialis also sell what they call lifetime software and so more rarely nowadays don’t charge you for keep using the software or for upgrades. I think they are to be commended for this!


Software Development Is Creativity – Kaira