Java-Gaming.org    
Featured games (79)
games approved by the League of Dukes
Games in Showcase (475)
Games in Android Showcase (106)
games submitted by our members
Games in WIP (530)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  Making it hard to break the registration process  (Read 2460 times)
0 Members and 1 Guest are viewing this topic.
Offline kevglass

JGO Kernel


Medals: 118
Projects: 23
Exp: 18 years


Coder, Trainee Pixel Artist, Game Reviewer


« Posted 2006-04-13 23:33:11 »

Before everyone jumps, I've read (and posted) plenty of times that its not possible to protect your game from all pirates everywhere. With enough time and effort any system is going to be broken. However, I want to release a game with 10 levels in the demo and 50 levels in the full version. I'd like only the people that have payed to be able to play the 50 level version. Given in Java that everything is decompilable and is normally pretty easy to read afterwards, has anyone any suggestions on how to make it hard for people to simply remove the registration checks etc?

In this case, high score tables probably arn't going to be terribly suitable (although maybe) and there is no online play to cross check registrations.

Kev

Offline kevglass

JGO Kernel


Medals: 118
Projects: 23
Exp: 18 years


Coder, Trainee Pixel Artist, Game Reviewer


« Reply #1 - Posted 2006-04-13 23:37:23 »

Oh, molebox the whole thing into an encypted .exe file is a good solution. However it only works on windows right now - I think MacOSX is a the market to chase atm.

Kev

Offline Mr_Light

Senior Member




shiny.


« Reply #2 - Posted 2006-04-14 00:22:45 »

dynamicly  loading the levels and distribute the additional levels afterwards?

they then might be able to break out the this is a demo part but they stil wouldn't have the extra levels.

It's harder to read code than to write it. - it's even harder to write readable code.

The gospel of brother Riven: "The guarantee that all bugs are in *your* code is worth gold." Amen brother a-m-e-n.
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline Riven
« League of Dukes »

JGO Overlord


Medals: 742
Projects: 4
Exp: 16 years


Hand over your head.


« Reply #3 - Posted 2006-04-14 00:46:57 »

dynamicly  loading the levels and distribute the additional levels afterwards?

they then might be able to break out the this is a demo part but they stil wouldn't have the extra levels.

Which they'll find after a few seconds with google.



You might... want to collect data about the system (hardware stuff) and generate a key from that. then - during the registration process - send a bunch of encrypted files that can only be decrypted with that key.

Microsoft gave it a try Smiley

Hi, appreciate more people! Σ ♥ = ¾
Learn how to award medals... and work your way up the social rankings
Offline Riven
« League of Dukes »

JGO Overlord


Medals: 742
Projects: 4
Exp: 16 years


Hand over your head.


« Reply #4 - Posted 2006-04-14 00:52:06 »

 NetworkInterface.getNetworkInterfaces();
        --> nextElement().getName()

Dunno how to get the (pretty unique) MAC address through (without running ipconfig /all)

Hi, appreciate more people! Σ ♥ = ¾
Learn how to award medals... and work your way up the social rankings
Offline kevglass

JGO Kernel


Medals: 118
Projects: 23
Exp: 18 years


Coder, Trainee Pixel Artist, Game Reviewer


« Reply #5 - Posted 2006-04-14 00:56:52 »

Yeah, sorta ran through these in my head, but Microsoft have the advantage of having natives that do the key generation and decrypting (natives tend to scare your average kiddy cracker). If its done in Java they can reasonably simply decompile the decryption and force the right key in.

I know theres no way round decompilation with Java - trying to think something game related maybe that helps deter people.

One option is to make the game really really rubbish (shouldn't be too tricky) - then no one wants to play it or crack it Smiley Unfortunately this has other side effects.

Kev

Offline Riven
« League of Dukes »

JGO Overlord


Medals: 742
Projects: 4
Exp: 16 years


Hand over your head.


« Reply #6 - Posted 2006-04-14 01:02:31 »

Here is the thing:

Those who know how to crack it, and crack it, wouldn't buy your game anyway
Those who don't know how to crack it, and crack it with help of the above mentioned cracker, wouldn't buy your game anyway

So that pretty much tells you the effort you're going to make would only make less crackers play it, and would make exactly the same people buy it.


Did you know there are some AA(A?) titles being released these days without any copyright-protection, because of this?

Hi, appreciate more people! Σ ♥ = ¾
Learn how to award medals... and work your way up the social rankings
Offline kevglass

JGO Kernel


Medals: 118
Projects: 23
Exp: 18 years


Coder, Trainee Pixel Artist, Game Reviewer


« Reply #7 - Posted 2006-04-14 01:14:02 »

Quote
Those who don't know how to crack it, and crack it with help of the above mentioned cracker, wouldn't buy your game anyway

I've heard that lots of times - I don't agree. There are plenty of people in the world that would pay to play a game - but given the option of just taking it for free - will do. Maybe thats not so true in indie games - mostly your sales are going to be based on getting an impulse buy having just got a rush from playing the game - maybe not.

Kev

Offline c_lilian

Senior Member


Projects: 1


Java games will probably rock someday...


« Reply #8 - Posted 2006-04-14 08:37:06 »

Implement your own class loader, using a ciphering based on (part of )the registration key, and encrypt strategic class files ?

that way, the .class aren't decompilable (decrypting only occurs in memory).


That should prevent hackers for a few minutes more....

Lilian Smiley

Offline Riven
« League of Dukes »

JGO Overlord


Medals: 742
Projects: 4
Exp: 16 years


Hand over your head.


« Reply #9 - Posted 2006-04-14 13:22:01 »

You only have to replace 1 class in rt.jar to extract all the loaded classes (decrypted)

Think about it, the JVM has only 1 entrypoint to link new classes.


Yeah, a few more minutes it is Smiley

Hi, appreciate more people! Σ ♥ = ¾
Learn how to award medals... and work your way up the social rankings
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline Orangy Tang

JGO Kernel


Medals: 56
Projects: 11


Monkey for a head


« Reply #10 - Posted 2006-04-14 14:20:34 »

I know theres no way round decompilation with Java - trying to think something game related maybe that helps deter people.
Sounds like this would be worth reading. Some really nice methods described in there, although they're obviously at a very low level so pure-java implementations are likely to be tricky. IMHO you're going to have to go native anyway for anything half-decent.

Isn't piracy generally less of a problem on Mac compared to windows? Moleboxing the windows version and leaving the Mac as-is might be just as effective.

[ TriangularPixels.com - Play Growth Spurt, Rescue Squad and Snowman Village ] [ Rebirth - game resource library ]
Offline blahblahblahh

JGO Coder


Medals: 1


http://t-machine.org


« Reply #11 - Posted 2006-04-14 16:52:18 »

Before everyone jumps, I've read (and posted) plenty of times that its not possible to protect your game from all pirates everywhere. With enough time and effort any system is going to be broken. However, I want to release a game with 10 levels in the demo and 50 levels in the full version. I'd like only the people that have payed to be able to play the 50 level version.

People don't tend to bother cracking casual games quite so much. Put in basic protections, enough to scare people a little. I would suggest .exe packaging plus a 12 digit "registration key" that is a hash of the owner's name + salt. Just enough to make people think you're serious.

Further than that, I'd go for integrating with online in some way. e.g. download each level only on demand coupled with IP-based game-verification at download-level time, so that each player could only crack and distribute the levels they had managed to complete already.

i.e. go this route http://www.gamasutra.com/features/20051005/martin_01.shtml#

malloc will be first against the wall when the revolution comes...
Offline kappa
« League of Dukes »

JGO Kernel


Medals: 74
Projects: 15


★★★★★


« Reply #12 - Posted 2006-04-14 17:03:50 »

Sounds like this would be worth reading.

hehe that is a pretty good article! i'd say trick is not to stop the cracker but to delay the cracker for a long time hoping that he'll eventually give up Smiley
Offline Jeff

JGO Coder




Got any cats?


« Reply #13 - Posted 2006-04-15 01:09:29 »

Keep in mind that unless you are prepared to scour the internet with great regularity AND pay lawyers to chase whomever you find, all it takes is ONE cracker to crack it and everyone who is willing to get it for free can.


Got a question about Java and game programming?  Just new to the Java Game Development Community?  Try my FAQ.  Its likely you'll learn something!

http://wiki.java.net/bin/view/Games/JeffFAQ
Offline darkprophet

Senior Member




Go Go Gadget Arms


« Reply #14 - Posted 2006-04-15 01:43:30 »

Solution: Dont make games if your paranoid about them being cracked.

But you knew that already Tongue

DP

Friends don't let friends make MMORPGs.

Blog | Volatile-Engine
Offline kevglass

JGO Kernel


Medals: 118
Projects: 23
Exp: 18 years


Coder, Trainee Pixel Artist, Game Reviewer


« Reply #15 - Posted 2006-04-15 02:32:20 »

Downloading levels as and when people complete them would be nice  - but I'm not so sure it'd be good to force people to be online while they play?

Kev

Offline Kova

Senior Member





« Reply #16 - Posted 2006-04-15 12:26:51 »

If you write a game that is good enough to be cracked I think you don't really need to worry about the money from those who use the crack. Smiley  ... as long as it isn't some trivial crack where you only need to change system time or something like that. Cost of the game is also a factor, cracker are usually programmers and smart people themselves, I doubt any of them would try to crack a game that costs only few $.
Offline blahblahblahh

JGO Coder


Medals: 1


http://t-machine.org


« Reply #17 - Posted 2006-04-15 14:32:22 »

Downloading levels as and when people complete them would be nice  - but I'm not so sure it'd be good to force people to be online while they play?

Yep, but as you know there's really no easy-answers on this stuff :/

malloc will be first against the wall when the revolution comes...
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

ctomni231 (33 views)
2014-07-18 06:55:21

Zero Volt (29 views)
2014-07-17 23:47:54

danieldean (24 views)
2014-07-17 23:41:23

MustardPeter (26 views)
2014-07-16 23:30:00

Cero (41 views)
2014-07-16 00:42:17

Riven (43 views)
2014-07-14 18:02:53

OpenGLShaders (31 views)
2014-07-14 16:23:47

Riven (30 views)
2014-07-14 11:51:35

quew8 (29 views)
2014-07-13 13:57:52

SHC (65 views)
2014-07-12 17:50:04
HotSpot Options
by dleskov
2014-07-08 03:59:08

Java and Game Development Tutorials
by SwordsMiner
2014-06-14 00:58:24

Java and Game Development Tutorials
by SwordsMiner
2014-06-14 00:47:22

How do I start Java Game Development?
by ra4king
2014-05-17 11:13:37

HotSpot Options
by Roquen
2014-05-15 09:59:54

HotSpot Options
by Roquen
2014-05-06 15:03:10

Escape Analysis
by Roquen
2014-04-29 22:16:43

Experimental Toys
by Roquen
2014-04-28 13:24:22
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!