How to create a license key?

I have a question: how to create a license key? How to manage the keys, how to ensure that users do not pass the keys to each other?

Regarding the generation of blocks, I found a few ideas on stackoverflow forum. I like the idea to generate keys with hash code adding.

Any ideas?
I would be grateful for the advice of experienced people.

Pretty much any CS student can create a external key generator.
Then you’ll have to check keys online, then they’re going to patch your online check to always return “true” response… In the end you’ve wasted time and money.

Are you really asking how to create your own key-based DRM from scratch?

I think making a generator from scratch is a waste of time. Maybe there are some ready-made libraries that you can recommend?

Could you describe what you’re aiming for? If it’s DRM, there are commercial solutions out there.

Hello! Yes, I am looking for a reliable DRM.

No such creature.

Your options are either:

  1. ) Create and maintain a license server, using some form of constant online checking or ticketing system (which, as Bruno mentioned, people will probably just replace whatever DLL you lock that functionality in to just always return something valid).

  2. ) Purchase something like Denuvo ( ), which basically buys you a few days/weeks/maybe months till your stuff is cracked.

  3. ) Create some hardware dongle like the old school MAYA days (although even those were cracked).

I like the methods you suggested. Despite the fact that it is widely distributed. Sometimes even a schoolboy can break such a defense.
I will study method 2 and 3 in detail. Thanks

Have you tried to use ready-made solutions? Maybe some kind of licensing system?

No, I saw some ready-made solutions. But as I see, they are quite expensive.
Maybe you can advise something suitable?

I don’t know if UE4 support it, but if you need to publish your game only for Windows 10 and Windows Store, then I can suggest you to look at UWP, most of the game released with UWP are not yet cracked (for example Horizon) or was cracked after more than 500 days, you don’t need to mess with activation key, server, etc, the DRM is integrated, take a look at it.

if you are looking for something else I can assure you than doesn’t exist nothing cheap or lowcost, but you can take a look at VMPROTECT (PS: create it from scratch is a waste of time, don’t do it)

You can try a ready-made solution such as ArmDot or something like it (like kalakus said). Maybe this option will be acceptable for your program?

Which type of game are you going to make?

Think like this:

a) Is it like Fortnite?
b) Is it like a paid Steam game?
c) Even if it is still paid, does it depend on an online feature to work?


a) Basically you can play it for free, but for micro transactions you need to be a real user and that is all that matters. Micro transactions will be the only cash you will see, if they ever happen.
b) This type is crack-able, mainly because changing the steam DLLs you can play the game without steam, but you won’t be able to use any Steam exclusive features. In this case the Steam features are interesting for certain audiences, so these specific audiences are potential purchasers.
c) You have to code the game for it to not work unless some info comes from the server (data) which won’t be found anywhere in the client code. See that even commercial games have being cracked when people learnt how to create fake servers to mimic the data flow (Lineage2 from NCSoft is a well known one).

Sometimes a way to ensure games are not being accessed by third parties (someone just hacked your credentials), companies use digital certification to ensure who is accessing the game and that only an authorized one is (Korean companies do this while in their territory).

In the old days of Blizzard with Diablo I and II, which could be completely cracked, they still sold a lot, because people do needed an online feature: ability to play in multiplayer. So, the offline experience might be always a risk of completely crack, but while there are competitive online features, people won’t be able to use cracked versions. As of today, Blizzard titles just need to have the e-mail account (with or without 2-factor authentication) which made the purchase from their store.

If you plan on selling at Epic’s Store where you find out that DRMs are the only thing out of the current offered solution, you might just maybe think on how your product will be played in terms of features and why not let people crack a offline experience just to see that your product is good enough, so they would pay for it to have access to an improved online experience (which must be concrete!).

Focus on bringing to life your game with theses thoughts and criticism, so you will do the right move to have a nice product!

Try to develop your game/application and then people will want to buy it, not hack. The application must be very attractive so that users want to buy it.

Thanks for the detailed answer! I will try to check all the options. You helped me a lot!

Hello, we built LicenseSpring for this purpose, basically let’s you create license keys for specific products (games), and set the number devices that are allowed to use each key. When activating a license, it gets bound to the device, so you can’t just share it.

our C++ SDK makes it easy for you to connect to the License Server we maintain.

1 Like