ALM - Script license manager

Post your working scripts, libraries and tools.
rayan-refoua
Posts: 3
Joined: 15 Dec 2021, 01:02

ALM - Script license manager

06 Oct 2023, 10:01

ALM is a simple-to-use toolkit to protect your software from copyrighting by binding your software to a specific Mainboard and CPU serial number. Written in AutoHotkey v2

Here is the GitHub page:
https://github.com/Rayan-Refoua/AHK_ALM/tree/main

Background:
For the past 2 years I have been developing lots of automation and management scripts for the company I'm working at and what was once a hobby of mine has become a full-time job. it's not surprising that my boss insists on having a licensing system to prevent any illegal software distribution. I have worked with many commercial licensing software that protects your script and stops most skilled crackers from breaking the system but for all my use cases, even a simple HWID (Hardware) checker is sufficient, so I have created this simple class to do just that.

Features:
[*]Binds to CPU and MainBoard serial number
[*]Generated license key is valid across Windows installations on the same PC
[*]Uses SH-256 for both "HW ID" (Hardware ID) and "CPU ID" encryption.
[*]Fast Response (Usually under 1 second to validate license key)
[*]Saves License as a local file next to your script (No additional files or registry keys are needed.)
[*]Keygen included (Generate license keys in seconds for your clients)
[*]Differentiate between multiple software by unique "App ID" so with one HWID, each "License Key" would work only for the designated software.

FAQ:
[*]How secure is it?
Security is a relative term. it depends on who wants to crack your Software, as long as your software is running in the end user platform, and not on a remote server (such as a web application) it is possible to be done by an experienced cracker. However, with this class, I aim to fool-proof the system so the average end user would rather pay for the software instead of turning to illegal actions.

Acknowledgements:
Thanks to TheArkive for the:
CLSAK_AHK
BcryptHash_ahk2
kazhafeizhale
Posts: 77
Joined: 25 Dec 2018, 10:58

Re: ALM - Script license manager

09 Oct 2023, 04:17

Thanks for sharing. By the way, is there any plan to add the time expiration function
rayan-refoua
Posts: 3
Joined: 15 Dec 2021, 01:02

Re: ALM - Script license manager

09 Oct 2023, 11:53

kazhafeizhale wrote:
09 Oct 2023, 04:17
Thanks for sharing. By the way, is there any plan to add the time expiration function
I already created that but there are multiple problems concerning the validity of the time your script accesses since the end user can easily change system time/date or use utilities such as "RunAsDate" to trick the script and use trial or time-limited license key indefinitely.
I have thought about using a time API like "worldtimeapi.org" which would be a more reliable way but this will make your program a "Must be online" which is not desirable (at least in my opinion).
there are other ways to prevent date manipulation and I'm experimenting with different ideas to find a reliable solution.
User avatar
DuyMinh
Posts: 40
Joined: 05 May 2017, 08:34

Re: ALM - Script license manager

09 Oct 2023, 18:54

rayan-refoua wrote:
09 Oct 2023, 11:53
I already created that but there are multiple problems concerning the validity of the time your script accesses since the end user can easily change system time/date or use utilities such as "RunAsDate" to trick the script and use trial or time-limited license key indefinitely.
I have thought about using a time API like "worldtimeapi.org" which would be a more reliable way but this will make your program a "Must be online" which is not desirable (at least in my opinion).
there are other ways to prevent date manipulation and I'm experimenting with different ideas to find a reliable solution.
you can try to detect changes to the system time. You can do this by keeping track of the system time and checking for changes at regular intervals. If you detect a change, then you can assume that the user has tampered with the time and take appropriate action. I think this is a good solution if you don't want to use a time server to check.

Return to “Scripts and Functions (v2)”

Who is online

Users browsing this forum: mcl and 41 guests