Home Upgrade Search Memberlist Extras Hacker Tools Award Goals Help Wiki Contact

C# 

How to add a licensing system to your application :: AegisTools Licensing

Do you have a piece of software that you need licensing for?
You've come to the right place! You can try my licensing system for free!

First, head over to the licensing website and create your free application and name it whatever you like.
https://aegistools.tk/ui/licensing

Now copy your application ID and go to the License Loader tab and follow the installation instructions


#1 Installation
Get started with the licensing system
Spoiler (Click to View)

#2 Get Server Side Variable
Server side variables are one of the most important pieces to protect your application.
You should store important pieces of information in those server side variables, like stubs or configuration.
You can update the server side variables to show your users messages / news or change the behavior of your application on-the-fly.
Spoiler (Click to View)

#3 Get Posts
You can use posts to show your users messages
Spoiler (Click to View)

#4 Publish Logs
You can use logs to log things like exceptions in your application, or log important things that happen in your application.
Then you can view the logs in your licensing panel.
Spoiler (Click to View)




Frequently Asked Questions (FAQ)


How does the licensing system work?
The licensing system uses licensing codes ("codes") that you can sell or give away for free.
When your user then runs your application, they will be prompted to enter this code into the aegistools licensing website.
If they enter a valid code, the licensing system will generate a license for this user and your application will run.

Where are licenses stored?
The licenses are associated with the users aegistools account.
This means that a user can have multiple different licenses associated with their aegistools account.
To understand how the aegistools account works, please view this link:
https://aegistools.tawk.help/article/how...r-register

Can you help me use the licensing system with my application?
Please make sure you read the documentation and try it out first.
If you still need help or have any errors, then you can use the live chat on the https://aegistools.pw website or PM me for my discord and i will try to help you.

Can you help create me a custom licensing system?
Yes, you can message me via the live chat or discord / PM and we can discuss your options.
Why are you sharing code snippets in the form of images?
[Image: vp6iypF.gif]
(Feb 8, 2021 05:02 PM)MavenGradle Wrote:  Why are you sharing code snippets in the form of images?

They are in a nice and easy to read format with syntax highlighting.

For anyone that just wants to copy & paste the code, they can just go to the website and copy it directly from there.
It's on the exact same page as the license loader that they would have to download anyway.
How searchable/filterable are the logs on the server panel? Sending logs is the easy part, find the correct info out of millions of log entries is the hard part.
How long are logs stored for? What's the disk space limit on logs?

Any reason you aren't publishing this as a nuget package so users will automatically see that updates are available? Including the cs file seems like a strange approach?
(Feb 9, 2021 06:10 AM)Shadow_Cloud Wrote:  How searchable/filterable are the logs on the server panel?  Sending logs is the easy part, find the correct info out of millions of log entries is the hard part.

Thank you for the suggestions. I am constantly trying to improve the service and having more accesible logs is one of them.
Currently, my users do not store anywhere near a million logs for their applications, its more like hundreds to a thausend or two.

(Feb 9, 2021 06:10 AM)Shadow_Cloud Wrote:  How long are logs stored for?  What's the disk space limit on logs?


There is no practical limit on how many logs you can create, and there is no disk space limit.
The logs can be up to 10KB in size, and you can have as many of them as you want.
Everything is usage based, so as long as you have enough remaining usage, you can store logs.

Logs are kept for 1 week.


(Feb 9, 2021 06:10 AM)Shadow_Cloud Wrote:  Any reason you aren't publishing this as a nuget package so users will automatically see that updates are available?  Including the cs file seems like a strange approach?


You are right, publishing this as nuget package would be the better approach, however is it the easiest approach?
The licensing system should be as easy as possible to use, even for beginners, so I tried to make it as simple as possible and let users just drop in the licensing loader into their project, set the application ID and be done for the most part.

I might create a poll in the future and just ask my users if they prefer my method, or if they would like to go the nuget way, thanks for the suggestion!
(Feb 9, 2021 07:35 AM)neon_light Wrote:  Thank you for the suggestions. I am constantly trying to improve the service and having more accesible logs is one of them.
Currently, my users do not store anywhere near a million logs for their applications, its more like hundreds to a thausend or two.



There is no practical limit on how many logs you can create, and there is no disk space limit.
The logs can be up to 10KB in size, and you can have as many of them as you want.
Everything is usage based, so as long as you have enough remaining usage, you can store logs.

Logs are kept for 1 week.




You are right, publishing this as nuget package would be the better approach, however is it the easiest approach?
The licensing system should be as easy as possible to use, even for beginners, so I tried to make it as simple as possible and let users just drop in the licensing loader into their project, set the application ID and be done for the most part.

I might create a poll in the future and just ask my users if they prefer my method, or if they would like to go the nuget way, thanks for the suggestion!

Neat! You could always have both options available, I'm not sure they need to be mutually exclusive? Nuget just means users have a pretty simple upgrade/downgrade path and installing a nuget package should be pretty trivial?

I've spent a lot of time looking at the aggregation of large datasets while minimizing the loss of important events so this is an area of software I know pretty well.

Any plans to do a core version of this rather than framework?


Keep it up! I have tons of questions about the setup/architecture of this behind the scenes, but not sure a public forum is the best platform, if you are interested in having a conversation, feel free to hit me up ;)
(Feb 9, 2021 08:35 AM)Shadow_Cloud Wrote:  Neat! You could always have both options available, I'm not sure they need to be mutually exclusive?  Nuget just means users have a pretty simple upgrade/downgrade path and installing a nuget package should be pretty trivial? 

Oh yes that's true.

(Feb 9, 2021 08:35 AM)Shadow_Cloud Wrote:  Keep it up! I have tons of questions about the setup/architecture of this behind the scenes, but not sure a public forum is the best platform, if you are interested in having a conversation, feel free to hit me up ;)

Sure, you can message me / convo me if you like :)
Interesting approach, I'll will take the time to look at this thanks for sharing and contributing buddy
buy me a coffee eth:0x88621A52aa5Eb3b6503628369687111810186c58
i still wonder why people still try to get license systems in dotnet.. thats like offering doors for houses without a actual lock lol
(Mar 4, 2021 04:53 AM)ucsandaasu Wrote:  i still wonder why people still try to get license systems in dotnet.. thats like offering doors for houses without a actual lock lol

well the biggest reason is just user management.
You want to see how many users you have, when they are active, you want to be able to expire their licenses and restrict them to certain devices.

You can also make the system fairly secure against people that are trying to crack it by simply using server side variables, since an attacker will always need a valid license to get access to your server side variables.
(Mar 4, 2021 04:53 AM)ucsandaasu Wrote:  i still wonder why people still try to get license systems in dotnet.. thats like offering doors for houses without a actual lock lol

So that's a position, not an argument. Care to explain how you arrived at that? I suspect from your comment that your understanding of the dotnet eco system is still living in the 90s with the .Net Framework. The Net5 stuff is actually looking remarkably good.
(Mar 4, 2021 05:01 AM)neon_light Wrote:  <snip>
since an attacker will always need a valid license to get access to your server side variables.

Is that correct? Don't you only need a license for the first time, and simply "crack" the software with the variables you just got, so after that it would work even without a license? Didn't really look into .NET licensing systems, to be honest, so if you could explain it, that'd be great.
[Image: B37mjKj.png]
(Mar 4, 2021 05:23 AM)xHeaven Wrote:  Is that correct? Don't you only need a license for the first time, and simply "crack" the software with the variables you just got, so after that it would work even without a license? Didn't really look into .NET licensing systems, to be honest, so if you could explain it, that'd be great.


If your variable is static then that could certainly work. If you are using it for something like a crypter stub, then having the stub from 4 weeks ago isn't going to help you much, since you want the latest stub.
(Mar 4, 2021 05:23 AM)xHeaven Wrote:  Is that correct? Don't you only need a license for the first time, and simply "crack" the software with the variables you just got, so after that it would work even without a license? Didn't really look into .NET licensing systems, to be honest, so if you could explain it, that'd be great.

The encrypted values could be time sensitive, this is a common trait with access tokens like JWT. 

Code
            SecurityTokenDescriptor tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(claims),
                Expires = DateTime.UtcNow.AddMinutes(ExpiryInMinutes),
                SigningCredentials = new SigningCredentials(GetSymmetricSecurityKey(), SecurityAlgorithms.HmacSha256Signature)
            };
(Mar 4, 2021 05:26 AM)Shadow_Cloud Wrote:  The encrypted values could be time sensitive, this is a common trait with access tokens like JWT. 

Code
            SecurityTokenDescriptor tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(claims),
                Expires = DateTime.UtcNow.AddMinutes(ExpiryInMinutes),
                SigningCredentials = new SigningCredentials(GetSymmetricSecurityKey(), SecurityAlgorithms.HmacSha256Signature)
            };


That wouldn't really help, since someone can decrypt it in time (once) and dump the values and hardcode them into the cracked application.

The only solution is to have variables that change fairly regularly and are required to use the application (like a crypter stub)


Possibly Related Threads...
Thread / Author Replies Views Last Post
[C] by Lithium MindAug 26, 2022 06:22 AM 6 553 Aug 26, 2022 06:22 AM
Last Post: WingsOfAltair
[.NET] by DrZirODec 7, 2020 12:09 PM 4 422 Dec 7, 2020 12:09 PM
Last Post: memory
[.NET] by 0xDEAD10CCAug 9, 2019 02:14 PM 15 1,852 Aug 9, 2019 02:14 PM
Last Post: sdk