Improvements for SKGL

Topics: Development
May 9, 2012 at 7:39 PM

If you have an idea how a certain part (a procedure, a method) of the code might be improved (ex. a faster algorithm), please post your answer here. Thank you!

Jun 14, 2012 at 9:35 AM

My current improvement for SKGL is to create a "machine code" feature. This will allow you to lock the key to a certain computer, which will make the serial key only valid on the specified machine.

I think the benefit of adding this feature is:

  1. the serial key won't be easily distributed, which means none can share their keys with others.

In order to implement this feature, I will need to:

  1. decide the required length of the machine-code.
  2. reduce the length of the serial key hash and/or the amount of "features*".

So, to do that, I will need your help in answering these questions:

  • Would you like me to reduce the amount of "features*" to 5 only (currently 8 features*)?
  • Do you think the hash length should be reduced as well?
  • Do you like the idea of "machine locking" useful?


* Feature locking is a feature of SKGL, which allows you to adjust your application in several ways (ex: trial, lite, pro, enterprise). Currently, there are eight features supported.

Jun 24, 2012 at 5:36 PM
Edited Jun 24, 2012 at 5:39 PM

As an answer to the post above, I would like to inform you that after the time I got to solve this task, I would say that

  • Machine code length will be 5 digits long (or 4)
  • The amount of features will not be decreased.
  • The key hash will be reduced to 4 digits (or 5)

Below you find the c# version of the machine code feature. (note it will be rewritten to VB.NET)

            ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_Processor");
            string collectedInfo = ""; // here we will put the informa

            foreach (ManagementObject share in searcher.Get())
                // first of all, the processorid
                collectedInfo += share.GetPropertyValue("ProcessorId").ToString ();

            searcher.Query = new ObjectQuery("select * from Win32_BIOS");
            foreach (ManagementObject share in searcher.Get())
                //then, the serial number of BIOS
                collectedInfo +=share.GetPropertyValue("SerialNumber").ToString ();

            searcher.Query = new ObjectQuery("select * from Win32_BaseBoard");
            foreach (ManagementObject share in searcher.Get())
                //finally, the serial number of motherboard
                collectedInfo+= share.GetPropertyValue("SerialNumber").ToString();
            return GetStableHash(collectedInfo ).ToString ();

Here is the post about the update at my blog:

P.S. This might change though!

May 30, 2013 at 10:37 AM
As there is already mentioned in ISSUES list - MachineCode will throw an exception on VirtualBox or another Virtual Machine.
May 30, 2013 at 11:32 AM
Edited May 30, 2013 at 11:32 AM
Hi uldisv,

There is a new planned release of SKGL ( where this issue is solved by lberna's patch! Could you please check it out and reply if everything works as it should!

Jun 7, 2013 at 8:31 PM
I'd suggest you also confuse SKGL project. Without encryption - anybody can easily reverse engineer this code and get plaintext algorithm.
I confuse my project including SKGL assembly with Confuser - works like a charm.

But any developer can confuse his project at release stage also.

Jul 8, 2013 at 3:45 PM
Hi everyone! I am so sorry for being so slow, but that is to some extent because I did not have access to my Visual Studio laptop for some time. Now, in order to make sure that everyone can see what I am doing, I have posted the check list for the coming updates to SKGL

The link to the document:!26814&authkey=!AELLNd6ZA9frU2A

Jul 8, 2013 at 5:51 PM
Hi Artem,

It's great that you still work on the library :-)

One question, will every new release then be in C# or do you still write it in VB.NET and then you will just convert it into C#?


Jul 8, 2013 at 5:55 PM
Edited Jul 8, 2013 at 5:57 PM
Hi Corpy,

I am more used to C# than to VB.NET right now, so I will sooner or later upgrade to C#! The problem at the moment is that I am bit unsure about some modules, like MegaMath, that SKGL is currently using. Please see this thread:

Jul 8, 2013 at 5:56 PM
Hi - I saw that this question it is already added in suggestions/wishlists.