Allegro.cc - Online Community

Allegro.cc Forums » Game Design & Concepts » Making copy protection for a Shareware game

Credits go to Arthur Kalliokoski, BAF, Ceagon Xylas, Corelian, Derezo, Evert, Fladimir da Gorf, gnolam, Hard Rock, HardTranceFan, Jakub Wasilewski, kentl, Kitty Cat, LennyLen, Matthew Leverton, MiquelFire, Nils Fagerburg, OICW, Oscar Giner, Paul Pridham, piccolo, Richard Phipps, Sirocco, SpeeS3, Steve++, TeamTerradactyl, Tobias Dammers, Trezker, Victor Williams Stafusa da Silva, and wiseguy for helping out!
This thread is locked; no one can reply to it. rss feed Print
Making copy protection for a Shareware game
TeamTerradactyl
Member #7,733
September 2006
avatar

piccolo said:

so your say the software has the private key in-side of it and uses it to make public key then we decrepit the public key with our private key. Is that right?
if thats right that means we wound have to have the same private key in every software package. if that is the case then we can find out the private key and make hacked public keys. wait if the all private keys are the same then all public keys will be the same as well.

The way that I proposed it:

1) You get the game on CD or by downloading it from some website.
2) When you register the game, you get a Registration Code. If you buy the game, that registration code is on the CD sleeve or whatever
3) You are prompted, when you play the game, to enter the registration code. If the code you provide doesn't decrypt some of the game files, then the game knows that it was an invalid code.

The Private Key is never given to anyone: the programmer himself (or herself, in my case) would keep it. Then when someone registers, I would use my Private Key to generate a Public Key. This 'public key' that I send back to them is their Registration Code that unlocks the game.

It is possible that one person will try to distribute his or her Registration Code to others. As long as there's no internet connection which tells the programmer's server that the Registration Code is being used in several different locations at the same time (read: pirated), then there is really no way to tell that the Registration Code is being passed around. But as soon as someone registers, then we know that that code was used, and deal with pirates however we will.

So everyone gets a different Registration Code. Player 1 gets code Y4X7T, while Player 2's code is 55F5C, etc.

Did that help clarify, piccolo?

HardTranceFan
Member #7,317
June 2006
avatar

No, the private key is used to encrypt the data. We hold onto that key. The encrypted data (which doesn't contain the private key) is then sent out, along with the public key. It's a bit like encryping a .zip file - the password isn't included in the file, but will decrypt the file when used.

Yes, it does mean either you have a file that is encrypted once and sent out multiple times, you risk the public key getting into the hands of those who shouldn't have it (much like older versions of Windows).

Alternatively you could encrypt each release with a unique key, and thus only have one public key that'll work for it. The benefit being if people have to purchase the key, and it gets passed around, you know who is responsible (assuming they use a legit and tracable method of purchasing, and their name or address is real). The downside of this is that there's a processing overhead for each program before it gets sent out.

[edit]
Beaten by TT :)
[/edit]

--
"Shame your mind don't shine like your possessions do" - Faithless (I want more part 1)

piccolo
Member #3,163
January 2003
avatar

yes i c where your getting at. there have been many methods to crack both of those examples. as far as i c nothing cant be cracked. but that will stop me from cracking your software because it a pain to do. but if i was payed thats a different story. if a group of people that wanted to play me to crack in for there group it will be cracked on put on the internet for free downloading so in the end it make no sense. if people want to crack it it will be cracked.

[edit]
take what money you get. don't try and get every penny.

wow
-------------------------------
i am who you are not am i

HardTranceFan
Member #7,317
June 2006
avatar

Don't expect any offers soon - it'd be cheaper to buy a game than to pay someone to crack it. Especially if it's shareware :)

--
"Shame your mind don't shine like your possessions do" - Faithless (I want more part 1)

SpeeS3
Member #7,939
November 2006

Some installers have nagscreens but they have a KEY Function where U make the codes randomizem and deal with the Nagscreens of shareware (timer)

HardTranceFan
Member #7,317
June 2006
avatar

SpeeS3 said:

Some installers have nagscreens but they have a KEY Function where U make the codes randomizem and deal with the Nagscreens of shareware (timer)

Piccolo, is that your twin?

Do you mean there are KeyGen apps out there to deal with the Nagscreen? Those only work on a registration name and key, and the combination of these that an algorithm uses to decrypt. Not much good if you only need the one key to decrypt, and not a registration name to go with it.

--
"Shame your mind don't shine like your possessions do" - Faithless (I want more part 1)

Kikaru
Member #7,616
August 2006
avatar

Here is a thought I had: What if each copy of the game got a new randomly generated code every time it accessed the registration check server? Then, it would only allow the copy of the game with the correct code. Then, after each successful connection/verification with the passcode, it would get a new one. Would this work?

Evert
Member #794
November 2000
avatar

I wouldn't play it if it needs to connect to the internet everytime I run the game (online multiplayer games being the obvious exception, but I don't play those either).

SpeeS3
Member #7,939
November 2006

actually program a nagscreen... Look at Sunnny ball and Pixel ships retro.. installers may have a keygen app! these may cost 20 or more Dollars...

Or make a grabber file Password protect anything and everything

HardTranceFan
Member #7,317
June 2006
avatar

spees3 said:

installers can a keygen app! (20+ USD

Parlez-vous l'anglais ?

Read what you have written before you hit the Add Reply button. You're writing the way a one year old speaks - gibberish!

--
"Shame your mind don't shine like your possessions do" - Faithless (I want more part 1)

Victor Williams Stafusa da Silva
Member #4,212
January 2004
avatar

TeamTerradactyl said:

[quote HardTranceFan]
The idea is that there's a one private key for each public key (and vice versa).

So you're saying that Victor is incorrect: you CAN'T have 1 Private Key create 1000 Public Keys?
</quote>

me said:

So if we have n private keys so we have exaclty n public keys.

Well, i did not write it clearly.
Anyway, for practical purposes and for simplicity, cosider that exists just one public key and just one private key.

[The attack of the space bugs - Speedhack 2005] [Rambananas - Speedhack 2006] [Make clean - Speedhack 2009] [The source god - TINS 2010]

Kikaru
Member #7,616
August 2006
avatar

Well, I guess I have a method for an online registry check. Thanks for all of the help/discussion! :)



Go to: