Serial Key Maker 4.0.0.1 Released

August 23, 2009

Serial Key Maker 4.0.0.1 is now available for general release! 

This is a major update and is available for free to everyone who has an active service contract.

The single biggest new feature is the ability to programatically generate license keys (This is only available in the PRO version of Serial Key Maker).  This long awaited feature allows you to create a web sevice, or other networked application, that can automatically generate licenses keys without your manual intervention.  I’ll discuss in more detail below.

Other features and bug fixes of this release include:

  • revision of the wrapper functionality, making it more intuitive.
  • ability to optionally always delete unwrapped file after use.
  • addition of “Show Me The Code” – an embedded utility to generate working code using your private key that shows the use of encryption and how to implement Serial Key Maker.
  • enhanced code samples to demonstrate the use of Serial Key Maker (including a web service demo).

Programatically Generating License Keys

I created an extension to the Serial Key Maker API that allows you to programatically generate license keys.  This allows users to create and maintain say a web service that serves up license keys.   You effectively specify the license key properties (type, duration valid, features unlocked, number of keys to generate etc), pass that to the Extension API and call the generate method, you are passed back an array list of license keys.

Programatically Generating License Keys

Programatically Generating License Keys

 

Setting up the key properties

Setting up the key properties

 

Included in the samples (available here) is a demonstration web service that shows how to implement the new extension object.

The Serial Key Maker user interface now includes a code generator that will take your private key, encrypt it for you, and create working code with actual license keys generated from your private key.  All you need to do is copy and paste the code into your project and tweak it.

Show Me The Code

Show Me The Code

 

Generated Code - ready to use!

Generated Code - ready to use!

 

I have enhanced the wrapper functionality – you can now specify that you want to always delete the unwrapped file after the user has finished.  Before, it only deleted EXE files after use.  Now you can specify any file that will get deleted.  This is useful for people that want to protect a wider range of files that do not get modified – like PDF’s,WMV’s etc.

Wrapper Enhancement - always delete

Wrapper Enhancement - always delete

 

If you have not yet tried Serial Key Maker – now is a great time to try – click here to download the latest.


Changes Coming to Serial Key Maker

February 11, 2009

After taking a break from working on the Serial Key Maker code over the holidays, I am now ready to move ahead with some changes that I have been mulling over.  I have had a number of very useful feature requests, and I’d like to implement them.  (Keep the the requests coming!)

Website Changes

First, I am working on re-designing the website.  I have decided to change to and ASP.Net provider.  I’d like to have a more dynamic web site, and server, for the changes I am planning for the future of Serial Key Maker.  I have outsourced the design and implementation of the web site; work has already started on the new version.

Down the road, I intend to make a web service available to manage License Key generation. Users have been asking for a subscription model to Serial Key Maker where they can effortlessly add logic to their applications to call home and validate license keys.  This opens up tons of  possibilities for the future of the software – like being able to disable keys on the fly and having more flexible terms with the validity of keys.

So, the new server, and ASP.Net hosting is the first step in that direction.  I will post more information on the new look of the web site in the coming weeks.

While that is going on, I am working on extending the API. 

Machine Key Changes

I am going to extend how machine keys are used to limit licenses.  I will allow the user to select how the machine code is generated – which hardware to use as a component of the signature.  Right now, the Serial Key Maker API makes the choice, and it is static.  Some users have requested the ability to decide which hardware components get selected.  I will make that choice available via an overloaded method call in the API.

 Valid Dates

The way demo dates are created and used is as follows:  A generated license key is valid from the day it is created until a preset number of days have passed.  I am going to allow the developer to specify which date the license key uses as the start date (in other words, not be restricted to the date that it was created).  This will provide the flexibility to extend the range of dates used for demo license keys

 Longer Term Plans

I am mulling over these plans for Serial Key Maker:

Extract Key Generation Logic

I would like to provide an API interface for creating license keys. Tthat is, extract the logic of generating keys from the UI and make it available via a new API.  This will provide the benefit of programatically automating the generation of license keys.  So, a typical usage would be to create a web service you host on your server, and have your application call home to get it’s license key, or to validate that it is good.  This will allow developers the ability to dynamically disable license keys…or perhaps even extend their validity.

Hosted Web Service

As mentioned, I am comtemplating a similar service offering myself.  That way you would not have to deal with the issue – Serial Key Maker would take care of it for you.

Compact Framework API

Finally, I intend to port the API to the compact framework.  I’d like to make Serial Key Maker available to .Net applications created for handheld devices.


Valentine’s Day 20% Promotion!

February 7, 2009

We are happy to announce a special Valentine’s Day discount to any new purchases of Serial Key Maker.  Starting Monday 9th February 2009, you can use a coupon code to get a 20% dicount on any of the 3 flavors of Serial Key Maker.

The promotional code is:  FEB_VAL_2009

When making a purchase, there is a “Coupon Code” text box to enter the code before finalizing the sale – on the page after you enter your address/CC information.

Notes:  
  1. The promotion runs from 2/9/2009 to 2/28/2009
  2. It is valid only on new sales.  Sales made before or after the above dates do not qualify.
  3. The coupon code has to be used in conjunction with the purchase.  Unfortunately, I cannot apply the discount (or refund the discounted money) after the sale is finalized.
  4. The discount only applies to the purchase price of Serial Key Maker PRO, Standard and Lite.  It does not apply to the purchase of extended support.

If you have any questions, please do not hesitate to ask.


Good Software and Service!

November 27, 2008

I pride myself in creating good software and providing great service.  So when I am the recipient of good software, and great service, I am especially happy!

I am currently on a short trip to South Africa to visit my family.  On a whim, I decided to check how my web pages are loading from here.  Clicking through my site, I eventually landed on my product payment page, which is hosted and managed by FastSpring

I was thrilled to discover that they are mapping the IP address to country, and displaying the appropriate currency unit, and conversion.

FastSpring converts for location

FastSpring converts for location

 

I know this is not rocket science.  It is, however, a nice touch given that more than half my sales to date are from outside of the US.  It is comforting to know that my non-US customers do not have to calculate what my US-centric price means to them. 

I had not considered this aspect to my sales presentation before, and am now wondering how that is.  My pricing model and considerations have been very US-thinking.  Should I adjust prices for other currencies? Does it matter?

Just another example of why I am a FastSpring fan.  I am being provided with good value, and made to re-think what I am doing…


December 2008 Coupon

November 24, 2008

 

Use the coupon code below to get the PRO version of Serial Key Maker for $149.  Coupon expires 1/1/2009.

PRO_DEC_2008


Assembly Inspector – why you should get it!

November 24, 2008
 

The previous release of Serial Key Maker had a minor bug in it; minor – depending on your point of view, that is

For some unknown reason, I was referencing the Windows.Forms dll in my API. So when a user added the Serial Key Maker API reference to his project, Visual Studio pulled in the Windows.Forms dll too, when it wasn’t already referenced. I didn’t notice this because much of my testing involved a Windows Forms application.

However, if you are using the Serial Key Maker API from a console application, or in another DLL, you would not need the Windows.Forms reference, but Serial Key Maker would cause you to need it.

Lesson learned: Make a unit test for a scenario that does not involve windows forms.

This lead me to consider what other objects I had carelessly tied to my application. It turns out a colleague of mine has an application well suited to this problem. I had not used it before and my new problem seemed like an opportunity to take a good look at it. I got a copy of Assembly Inspector and put it to work on Serial Key Maker.

What follows is my review of Assembly Inspector.

Serial Key Maker and Assembly Inspector

Serial Key Maker and Assembly Inspector

Although I know and respect the author of Assembly Inspector, I have done my best to keep this review as unbiased as possible – focusing squarely on the value of the software he wrote. In fact, he didn’t use Serial Key Maker for his licensing solution (Serial Key Maker was not ready when he implemented his licensing solution), so I have no hidden agenda here.

I prize simple, intuitive software that just…works. Assembly Inspector is a huge winner in that category. From installation, to loading my first assembly, to evaluating the output generated, Assembly Inspector is beautiful in its simplicity.

It supports drag-n-drop and provides multiple views of the dependency tree. You can quickly switch from tree view to list view. You can filter out common Microsoft dependencies.

At a glance you can see all the DLL’s that your object is dependent on. The information supplied is everything you need to know about the objects referenced: name, version, location and whether it is signed or not.

At first, I performed a basic test of the Assembly Inspector functionality. A vanilla, “how does it work out of the box” test.

I dropped the Serial Key Maker API dll onto Assembly Inspector. I then dropped my user interface executable onto Assembly Inspector. In both cases, I quickly got a report of all the assemblies tied to my application, and felt confident that Assembly Inspector was correctly reporting how Serial Key Maker was put together. (If only I had looked at this tool before I released my previous version!)

assemblyinspector_listview_options

After the vanilla test, I tried to break Assembly Inspector.

I created 4 test DLL’s. DLL1 through DLL4. I made each DLL dependent on the other. I put DLL 2 and DLL4 in the GAC, and left DLL 1 and DLL3 out of the GAC. DLL4 referenced Serial Key Maker. I then referenced DLL1 from Test.Exe

When everything was set up correctly, I tested it with Assembly Inspector, and it reported everything correctly. I then tried the following to break AI

I removed DLL 2 and DLL 4 from the GAC independently
I renamed all 4 DLL’s independently
I recompiled DLL3, breaking binary compatibility
I changed DLL to be strongly named.

In all cases, Assembly Inspector correctly reported when one of the dependencies was missing, or un-reachable. No matter how I tried to fake out Assembly Inspector, it was able to correctly report what was broken, and where it was broken.

After the session, I was left with a high confidence that if Assembly Inspector did not report any dependency issues, then there were none.

The feature that allows you to filter out Microsoft assemblies is an excellent touch!

Often you will want to see and fix that which you have control of. You can usually safely assume the Microsoft dependencies are valid (if they are not, you have other issues, unrelated to the development of your product.). The feature, however, is not complete. I would like to have the ability to filter out libraries by name (including the use of wildcards, and perhaps regular expressions).

The “Hide” feature for Microsoft and System libraries did not exclude “mscorlib” and “Accessibillity”. I could have done that with a freeform text filter.

A practical application of this software for me would be to use it in my unit tests. I would like to be able to call it from my unit test harness, and have it run through its paces and report when I have something missing. Thus, a command line interface would fully complete what I would need out of this application.

Another nifty feature of the reporting, is that Assembly Inspector efficiently removes all duplicate references from view. If two objects reference the same dependency, it is not repeated. This was done, I assume, to streamline the display, and make the dependency list more readable. I would, however, like to be able to toggle this feature, so I can optionally see where each dependency is repeated and used.

In all, I was very impressed with the presentation and function of Assembly Inspector. It accurately told me the state of my application’s dependencies, and provided full comfort that my software was as I thought it was…which is what you want and expect from such a tool.

Summary

Version Evaluated: 2008.10.5.9

Pros: Very clean, simple interface; does exactly what it says it does; accurate and reliable results.

Like to See: Free text filter; ability to toggle seeing repeated dependencies; a command line interface to be able to include Assembly Inspector validation into my unit tests.

Verdict: If you work with and deploy .Net assemblies, Get It!

assemblyinspector_about


Version 3.0.1.2 – DEMO keys from the API!

November 20, 2008

 

I have released a new version of Serial Key Maker (3.0.1.2) that now allows you to create demo keys by making a call to the API.

All you need to do is call the “MakeDemoKey” method on the API, passing in your private key and the number of days you want the key to be valid for.

objLicenseObject.MakeDemoKey(“MyPrivateKey”,30)

 

 

This feature will allow you to create a demo key for your user when your application installs.  That way, your user does not have to contact you before using your product.

Serial Key Maker actually uses this feature! 

As mentioned before, Serial Key Maker uses the API for its own licensing validating.  When you install it for the first time, it operates in DEMO mode.  The demo key is now generated from the “MakeDemoKey” method on the API object.


Pricing Change with 2.1.0.1

July 11, 2008

 

I have decided to release 3 versions of Serial Key Maker.  I will sell a LITE version, a Standard Version and a Professional Version. 

The Lite version ($49) will be a stripped down version of Serial Key Maker with just the basic functionality.  The Standard version ($99) is pretty much the same as the current version and the Professional Version ($199) is the version that contains the new functionality. 

Here is the breakdown of the functionality of each Version:

DEMO Version

Price: Free, valid for 30 days.

  1. Can NOT create unlimited duration keys.
  2. Limited keys generated in the demo version can be valid for a maximum of 14 days.
  3. CAN create up to 10 keys when creating keys in bulk-create mode.
  4. CAN use the new “Limit Features” functionality.
  5. CAN create machine specific keys.
  6. CAN use the “Freeform Text” functionality
  7. Can NOT use the Encrypt Text utility.

LITE Version

Price: $49, 30 days free support
Upgrade Price: N/A
Support Fees: $5 per year

  1. Can create unlimited duration keys.
  2. Limited keys generated in the LITE version can be valid for a maximum of 14 days.
  3. Can only create 1 key at a time.  No bulk key functionality.
  4. Can NOT use the new “Limit Features” functionality.
  5. Can NOT create machine specific keys.
  6. Can NOT use the “Freeform Text” functionality
  7. Can NOT use the Encrypt Text utility.

STANDARD Version

Price: $99, 30 days free support
Upgrade Price: Upgrade from LITE is $69
Support Fees: $30 per year

  1. CAN create unlimited duration keys.
  2. Limited keys generated in the STANDARD version can be valid for a maximum of 360 days.
  3. Can create up to 500 keys when creating keys in bulk-create mode.
  4. Can NOT use the new “Limit Features” functionality.
  5. Can NOT create machine specific keys.
  6. Can NOT use the “Freeform Text” functionality
  7. CAN use the Encrypt Text utility.

PROFESSIONAL Version

Price: $199, 30 days free support
Upgrade Price: Upgrade from STANDARD is $110, and from LITE is $160
Support Fees: $45 per year $199

  1. CAN create unlimited duration keys.
  2. Limited keys generated in the PROFESSIONAL version can be valid for a maximum of 360 days.
  3. Can create 1000 keys when creating keys in bulk-create mode.
  4. CAN use the new “Limit Features” functionality.
  5. CAN create machine specific keys.
  6. CAN use the “Freeform Text” functionality
  7. CAN use the Encrypt Text utility.

I have also added some more robust descriptions in the application, and have added to the samples showing how to use the new functionality.

I am currently working on the changes to the website, and expect to release by 7/14/2008.


New Maintenance Policy

July 1, 2008

 

This is a reminder that effective July 1 2008 I have changed the maintenance policy pertaining to Serial Key Maker.  It works as follows:

  1. The purchase of Serial Key Maker comes with 30 days free email support.  This allows unlimited email correspondance in trouble shooting and implementing Serial Key Maker.  Additionally, if during that time a new version is released, the user may upgrade to the new version, and a new License Key will be issued and no additional charge.
  2. After the initial 30 day period, a yearly maintenance plan can be purchased for $30 per registered license per year.  Again, while under maintenance, email support is free as are software upgrades.

Bug fix patches are always free, regardless of maintenance status.

If you have any questions regarding the policy change, please do not hesitate to ask.


Why do you need License Key Protection?

May 29, 2008

Do you want license key protection to stop hackers using your software for free? Or is it perhaps to stop competitors from reverse engineering your algorithms?

While understandable, these goals are futile for us developers.  .Net and its IL compiler makes it even more futile. No matter how much time and money you spend on obfuscation and License Key protection, there will always be someone with enough time and skill to bash and crack through it. If a computer can make sense of your code, so can a human.

My suggestion is that you should refocus your energy and redefine what you need out of License Key Protection.

As with all aspects of development, it becomes an issue of balancing cost versus benefit. You can spend many thousands (literally) of dollars on a Licensing System, and have
very very very good protection, making it very very very difficult to crack and reverse engineer, or obviously, you can do nothing, and make it easy to crack.

Somewhere in the middle is a solution for you and your software. As a Micro-ISV (my intended audience) you do not have a huge budget (or even a large one), you likely have a relatively in-expensive product (in the 20-100 dollar price range) and you are selling to regular (non-IT) people.

Your target users will find your product useful and will pay for it if asked. Unfortunately, most people will use it for free if allowed to do so. For the most part they won’t necessarily search hacker sites for a cracked version, but if they get a non-limited copy they will use it.

My opinion is that you do not need to spend hundreds (thousands) of dollars on a license key solution with all the bells and whistles. What you need is a solution that limits some of the juicy features of the product, and limits their usage for a certain amount of time. This becomes an opportunity to show your product to users, and get them hooked on its functionality, and then incent them to purchase it.

Your licensing solution should, therefore, be a marketing tool, not an anti-hacking tool. You are using it to put your product in front of people and make a sale.

You may be thinking that if this is all you need out of a licensing solution that you may as well roll your own solution. We all think like this. It’s how we became developers in the first place. However, as business people, we need to consider the real cost involved and weigh that against the benefits.

How long would it take to make a robust, error free license key solution? 20 hours is the absolute minimum, in my opinion – and I doubt it could be done even that quickly.

If your time is worth 65 to 150 dollars per hour ($1300-$3000), buying a robust solution in the price range of 100 to 200 dollars on the other hand seems like a great investment – one which would include support and maintenance, I might add. (Something to consider when your license solution breaks or needs to evolve)

Summary

  • you indeed need some form of licensing solution
  • you cannot get one that is uncrackable
  • you do not have to make it yourself
  • it does not have to be ultra expensive to be good

Thank you for reading,

Grant