Skip to main content
GameDev.net gamedev.net
🔒 Locked

Anti-Hacking Thread/Forum

Started by Prozak Jan 27, 2004 at 12:18 AM 108 replies 7k views
Original Post
Prozak
Prozak
I would like to see a Forum here on GameDev.Net about anti-hacking/cracking/reengeneering of our software, and this thread is a good example of how we could develop and participate on these discussions. I'm doing a 3D model viewer that loads up encrypted models, so that others cannot steal the models, and it is exactly the type of software that require some sort of special protection. Also, I think we are pretty aware of how inneficient protection is on indie games, usually relying on a simple serial key that can quickly be cracked with a simple "jmp" instruction. I too plan on releasing some games as soon as my engine gets all the features i want, which is not that far off, maybe 3 months, and by then i would like to have a protection mechanism that makes me feel safer when i release the game as shareware, trying to make some money off of it.... Is there an open source lib for code protection, or website dedicated to that sort of thing? As is obvious i know there are no miraculous solutions, all i want to do is give the crackers the hardest time possible, like any developer. The longer they take to crack it, the more money i make because the only source for the game is the ligitimate source... One paper i read described a method for placing inlined functions that read the on-memory code and generated a CRC key. This key was used to encrypt the models, and decrypt them too. So, if the on-memory code had been tampered with, the CRC key would be diferent, and the decryption of the loaded models would turn into garbage... Your thoughts (and links) on all of this would be quite welcome... Link: Open Source Code Protection Anti-Cracking Tutorial EDIT: Added another Link...

[Hugo Ferreira][Positronic Dreams][Colibri 3D Engine][Entropy HL2 MOD][Yann L.][Enginuity]
The most irrefutable evidence that there is intelligent life in the Universe is that they haven't contacted us!

[edited by - pentium3id on January 27, 2004 4:55:43 AM]
_DarkWIng_
_DarkWIng_
warning : this is just my personal opinion.
Don''t put to much energy in designing anti-hacking/cracking. There is no point in doing so. If someone wants a pirated/cracked copy he will get it. He may need to wait a few days more, if it is better protected, but the point is, he will get it. And someone who wants to buy it, will buy it, even if he can get pirated/cracked copy for free.

You should never let your fears become the boundaries of your dreams.
You should never let your fears become the boundaries of your dreams.
Prozak
Prozak
Well, the fact is that to get a pirated copy you have to break the protection scheme, and for that to happen, you''ll either have to do it yourself or wait till someone does it and uploads a patcher or something to the internet...

I also don''t agree that people will buy my game when they can get it all for free. Yes there is a small percentage of people that will do that, but we are talking about parents that dont have time or knowledge to go search for a crack, and they have the available money to buy the game for themselfs or their kids.

The main strategy here, as i said in my initial post is Delay.

Make the cracking task as long and boring as possible for the cracker, so that he either gives up or takes too much time, meanwhile you sell more copies, and even when the cracked exe comes out it still has to "spread", so that search engines point to the crack... Delay!


[Hugo Ferreira][Positronic Dreams][Colibri 3D Engine][Entropy HL2 MOD][Yann L.][Enginuity]
The most irrefutable evidence that there is intelligent life in the Universe is that they haven''t contacted us!

davepermen
davepermen
I see no use for it as well..




If that''s not the help you''re after then you''re going to have to explain the problem better than what you have. - joanusdmentia

davepermen.net
If that's not the help you're after then you're going to have to explain the problem better than what you have. - joanusdmentia
My Page davepermen.net | My Music on Bandcamp and on Soundcloud
mattd
mattd
Perhaps you could start by banning Programmer One from posting HackThis mini-competitions (personally I enjoy them)

____________
ride the sainted rhythms on the midnight train to romford

[edited by - mattd on January 27, 2004 4:00:57 AM]
Krippy2k
Krippy2k
I see plenty of use for it. It will equate to more dollars, pure and simple, as long as the game is something that people want to play. The whole concept that people are going to pirate it no matter what is flawed, and I know this from first hand experience. I know several people who purchase games rather than crack them, because they don't trust the cracks (a good percentage of them have virus and trojans attached), not because they feel some inner desire to pay the author for his hard work.

Sure, there are some people who are going to pirate it, no matter what. It's not the hard-core hackers that you should be focusig on, it is the average Tom, Dick and Harry who may not see anything wrong with copying software, but would rather pay for it than spend days searching for a crack that has a good possibility of being infected with a virus anyway. If they type in '[gamename] crack' and get 5035035 hits, they're not going to buy your game. If they do that and get a bunch of sites about crackheads, and maybe something about the crack for your game on the 3rd page, they will be much more likely to buy it.

Also, not every gamer is a master of google. There is a correlation between the difficulty of cracking a game, and the difficulty of finding a crack. The harder it is to crack, the fewer people will crack it, and the less places it will show up, giving less chances for a would-be pirate to find it.

I know of about $300 spent last year, within a 2 block radius of my house, on games, that wouldn't have been spent if there wasn't a decent copy protection.

You're not going to stop it all, but the harder you make it, the more people will buy your game, if it is worth buying.

Maybe on a shareware model it might not be worthwhile to put a whole lot of effort into it, but most tricks don't take a whole lot of effort. Anti-debugger code is about 6 lines of asm, and you can code a full memory-scanning module in about 100 lines. You probably won't want to code the next SafeDisc for a shareware game, but you will probably want to do more than a simple crippleware. The other thing is, if it's a shareware game, you're not going to have as many people trying to crack it, and probably not the best crackers. Therefore your mechanisms will be more effective.

Custom PE Encryption might be going overboard, but there are similar things you can do, like encrypt all of your strings and values in memory with a simple XOR, so that they can't use a memory scanner to search for the string and set a memory breakpoint, taking them right to the relevant code in a matter of seconds.

For some of my anti-cheat products, I have a program that stores a database of all of the strings I need to use in the code, and lets me assign an identifier, and a crypt key for each string. Then it will generate a header file with all of the identifiers as #defines, and in my code instead of doing this:

string output = "Invalid serial number";

I do this:

string output = getString( INVALID_SERIAL_NUMBER );

then getString will use it's #defined value as an index into the encrypted array of string packages (a string package being a string, and an encryption key), and return the required value.

Then when it is time to package it, the program will attach the encrypted string data to the executable.

It took less than 10 man-hours to do most of this, and as such the amount of time between release of a new version of the A/C software, and the time hacks are available for it, more than tripled since implementing it. Since people use the same tricks for cracking copy protection as they do for cheating, I am sure it would make a similar impact.

Peace

[edited by - krippy2k on January 27, 2004 4:35:31 AM]
Prozak
Prozak
Krippy2k, i absolutely agree with you.

I dont want to be seen as someone that is trying to create the next safedisk, and at the same time i believe the consumer will search for a crack first before buying the game...

So I would like to start a thread/forum/project with a small library of functions that could be used to sidetrack cracking attempts.

I would also like that anyone that knows of websites with good resources on this to share them...


[Hugo Ferreira][Positronic Dreams][Colibri 3D Engine][Entropy HL2 MOD][Yann L.][Enginuity]
The most irrefutable evidence that there is intelligent life in the Universe is that they haven''t contacted us!

Qw3r7yU10p!
Qw3r7yU10p!
quote:
Original post by pentium3id
we are talking about parents that dont have time or knowledge to go search for a crack, and they have the available money to buy the game for themselfs or their kids.



I think you''re forgetting another possibility: they know it''s wrong to steal.

I certainly know how to search for a way to get around games copy prevention but I don''t.

There''s that saying: a liar doesn''t believe anyone else.
Sneftel
Sneftel
My thoughts on this: The best way to prevent cracking is not technological. It's social. The dirty tricks that programmers can put in, and crackers can eventually circumvent, are just an escalating arms war, and one that takes up needless time and effort. Cumulatively, crackers have a lot more man-hours than most dev teams. So instead of going after them on that turf, how 'bout a spot where they're weaker: distribution.

What you have to understand about CD replication is this: From the initial CD-ROM (a CD-R), several "masters" are made. These are each used to "press" the CDs in different presses.

So what you can do, if you want, is have several different masters. Each of them should do the same general copy protection tricks, but with slight differences. Functions should be at different offsets. They should do things in different orders. A simple patch program that works on one should fail on the other. And there should be no way to tell, short of checksumming the EXE, which of the 4 or 5 versions a particular copy is.

So this means that an individual cracker will most likely release a crack that, unbeknownst to them, only works on 20% of the copies out there. They'll realize their error eventually, but the difficulty of obtaining and patching for all 4 or 5 different versions (for that matter, even knowing how many different versions there are) will buy you time.

And what do you do with that time? You screw with them. Download their cracks, copy their NFO files. Make your own cracks, that always pretend to succeed but actually do nothing, or make the game unwinnable in some way. Upload these "NEW WORKING CRACK"s to all the warez sites you can shake an FTP client at.

Wait 12 hours.

Then do it again. In the new packaged crack, bitch and moan about the evil developers (you) unscrupulously trying to destroy the cracking group's rep. Promise that THIS one is the ***REAL*** crack, and that they can verify it by going to such-and-such a channel on DALnet. Needless to say, this channel should be owned by you, and locked.

The result is that cracking the game will be possible for the individual cracker, but close to impossible for Joe Average. And, of course, Joe Average is your target customer.


"Sneftel is correct, if rather vulgar." --Flarelocke

[edited by - sneftel on January 27, 2004 4:56:37 AM]
Glyce
Glyce
Sneftel - You''re evil.
DevLiquidKnight
DevLiquidKnight
I made my own pe file encryptor http://www.geocities.com/killereaglesoftware in the downlodas section however its not the one I currently use of course..

[edited by - DevLiquidKnight on January 27, 2004 5:51:05 AM]
DrPizza
DrPizza
quote:
I also don''t agree that people will buy my game when they can get it all for free. Yes there is a small percentage of people that will do that, but we are talking about parents that dont have time or knowledge to go search for a crack, and they have the available money to buy the game for themselfs or their kids.

I have bought games that have cracks available in the past. I don''t see why I wouldn''t do so in the future.
char a[99999],*p=a;int main(int c,char**V){char*v=c>0?1[V]:(char*)V;if(c>=0)for(;*v&&93!=*v;){62==*v&&++p||60==*v&&--p||43==*v&&++*p||45==*v&&--*p||44==*v&&(*p=getchar())||46==*v&&putchar(*p)||91==*v&&(*p&&main(0,(char**)(--v+2))||(v=(char*)main(-1,(char**)++v)-1));++v;}else for(c=1;c;c+=(91==*v)-(93==*v),++v);return(int)v;} /*** drpizza@battleaxe.net ***/
UfoZ
UfoZ
The most original copy protection methods I have seen so far were the ones that realise the game is pirated, but don''t throw an error message in your face - instead, they alter the game mechanics just a bit in order to make it unwinnable or unenjoyable. Granted, this is possible to hunt down or crack, but it takes a while for little Johnny to figure out why his character can''t jump over the ledge on stage 5.
davepermen
davepermen
i can get anything for free. and if its not worth more, i will not pay more (and most the time, not use it/play it any more, as well, because it simply sucks).

for anything else, i pay. and i know of tons of others that do so, too. no game today is uncracked, you can download EVERYTHING. still, the good ones get BUYED. all others, not.

just make your game good, and there will be enough sellers. don''t wonder if everyone downloads the cracked version of your game. i do as well. i first try, and then buy, if i like it. most the time, at least.

if you don''t believe your customers want to actually pay your software without you forcing it by preventing all other possibilities, then you''re simply dump.




If that''s not the help you''re after then you''re going to have to explain the problem better than what you have. - joanusdmentia

davepermen.net
If that's not the help you're after then you're going to have to explain the problem better than what you have. - joanusdmentia
My Page davepermen.net | My Music on Bandcamp and on Soundcloud
Krippy2k
Krippy2k
If everybody were like you, then there wouldn't be a problem. But people like you do not comprise the vast majority of people.

People just don't like to pay for things they can get for free without hassle.

Much of our society is structured around this very premise; everything that contains anything of value has a lock on it, with the exception of some small towns. The most valuable items have armed guards. A large percentage of cars have alarms on them. Almost every large store has security cameras, and gas stations that let you pump before you pay are few and far between anymore. There are people who won't shoplift, who won't break into your house, steal your jewelry and kick your dog, who wont fill up their car and leave without paying, but there are enough people who will that it is not financially sound not to take these measures.

All one has to do is take a look at Kazaa and the other file sharing networks, with millions of people sharing terabytes of software, movies and MP3s to see that we do not live in a society chock full of DrPizzas and Davepermens who will buy things that they can get for free. And all one has to do is look at software companies who make games that are played by hundreds of thousands, but are barely raking in a profit, to see that a lot of people will not buy a good product just because it is good if they can get it for free.

Most modern games and software have demos available for you to try before you buy. The whole idea that piracy is about trying before you buy is a load of crap brought about by people who want to legitimize their theft.

Peace


[edited by - krippy2k on January 27, 2004 8:05:28 AM]
jonbell
jonbell
Sneftel, that method of copy protection simply wouldn''t work because crackers generally don''t release a standalone crack that goes and patches the exe they just release the full exe with all copy protection removed which would work on all copies.

My thoughts on this are that all you need to do is provide a very simple copy protection system (not a serial they can just search for that) to deter most general users. Anyone who knows what a crack is and wants to get a copied version of anything will do so. There is nothing whatsoever you can do to stop it. Thinking that you can develop a protection system where Sony, Nintendo etc have failed is very naive.

In my opinion the only form of copy protection that works is proprietry disk formats like the gamecube. It got hacked eventually on Dreamcast what Sega should have done is make the DC unable to read CD''s. If the hacker cant gett he media to put the game on they are fucked even if they managed to get to the data. If you data is on a PC the hackers can and (if its worth it) will do whatever they want with it.
Krippy2k
Krippy2k
Well, of course you wouldn't want to use that paradigm solely on executables. You could also store your data in a different way, and have the different executables load them differently. Say you have your models, you could store the vertices in a variety of different ways. On one: x,y,z,u1,v1,u2,v2. On another, v2, u2, v1, u1, y, z, x. On another, u1,v1,u2,v2,x,y,z. etc... You try to run one executable on a different version, and you will get a big mess on your screen, or a blue screen of death.

They would either have to make a different crack for each version, or dsitribute the entire game.

edit: now that I think about it, doing that to the models not be such a good idea, if you intend to allow people to make mods. However, there is bound to be some data that the game needs to load that would be irrelevant to mods, which you could make dependent.

Peace


[edited by - krippy2k on January 27, 2004 8:21:08 AM]
jollyjeffers
jollyjeffers
sneftel''s idea of "spamming" the crack networks with foney files is pretty clever... Isn''t that a bit like the tactics of the record industry filling up Kazaa with correctly named/length/size music files of new tracks that are nothing but white-noise? From what I read that worked well by irritating joe-normal so much that they just bought the album

Jack
<hr align="left" width="25%" />
Jack Hoxley <small>[</small><small> Forum FAQ | Revised FAQ |
davepermen
davepermen
quote:
Original post by Krippy2k
If everybody were like you, then there wouldn''t be a problem. But people like you do not comprise the vast majority of people.

People just don''t like to pay for things they can get for free without hassle.

Much of our society is structured around this very premise; everything that contains anything of value has a lock on it, with the exception of some small towns. The most valuable items have armed guards. A large percentage of cars have alarms on them. Almost every large store has security cameras, and gas stations that let you pump before you pay are few and far between anymore. There are people who won''t shoplift, who won''t break into your house, steal your jewelry and kick your dog, who wont fill up their car and leave without paying, but there are enough people who will that it is not financially sound not to take these measures.

All one has to do is take a look at Kazaa and the other file sharing networks, with millions of people sharing terabytes of software, movies and MP3s to see that we do not live in a society chock full of DrPizzas and Davepermens who will buy things that they can get for free. And all one has to do is look at software companies who make games that are played by hundreds of thousands, but are barely raking in a profit, to see that a lot of people will not buy a good product just because it is good if they can get it for free.

Most modern games and software have demos available for you to try before you buy. The whole idea that piracy is about trying before you buy is a load of crap brought about by people who want to legitimize their theft.

Peace


[edited by - krippy2k on January 27, 2004 8:05:28 AM]


if that would be true, why would anyone ever buy a game? there is no game that is not downloadable.

and people even buy gamecubes. you can''t get anything for free for a gamecube. but guess what? it''s worth paying.


oh, and if i look at the sells, they speak for themselfes. good games sell well. there is simply the issue of the market-overflooding similar to the music business. THIS makes games sell bad. tons of "pop"-games wich no one really wants, because they only satisfy for.. a minute, or two.

good games sell. just as good music sells. or a good movie. how much downloaded lotr? how much still ran into the theatres to see it life?




If that''s not the help you''re after then you''re going to have to explain the problem better than what you have. - joanusdmentia

davepermen.net
If that's not the help you're after then you're going to have to explain the problem better than what you have. - joanusdmentia
My Page davepermen.net | My Music on Bandcamp and on Soundcloud
Krippy2k
Krippy2k
quote:

good games sell. just as good music sells. or a good movie. how much downloaded lotr? how much still ran into the theatres to see it life?



There is a BIG difference between the experience of watching a crappy DivX recording that some guy recorded on his handheld camcorder from inside of a theater on a 19" CRT, and watching it in a theater with thundering sound and a massive screen.

You copy a game, and the experience is exactly the same as when you buy the game. There is no degradation of quality, and no absence of atmosphere.

Good games with copy protection sell. Good games with no copy protection sell far less. The major notable difference is games that are solely online games, where things like CD keys actually make a difference, and where there is a premium monthly fee. You can probably ship your MMORPGS with zero copy protection and not notice much difference in sales. You ship your single-player RTS or FPS with no copy protection, and you're going to lose a lot of sales.

According to your theory, you shouldn't need ANY kind of protection. No serial numbers, no CD keys, nothing. You should be able to post your game in it's entirety on a website for anybody to download, and let them send you money when they feel like sending you money. After all if it's a good game they will pay for it, right? Sure. You go ahead and do that. I won't be doing that.

quote:

if that would be true, why would anyone ever buy a game? there is no game that is not downloadable.



Lots of people DONT ever buy games, for that reason. Lots of people have done that in the past, and then lost everything on their computer because they caught a virus or trojan.

quote:

and people even buy gamecubes. you can't get anything for free for a gamecube. but guess what? it's worth paying.



What exactly does people buying gamecubes that are not piratable have to do with people not buying games that are piratable? If you could get stuff for free for gamecubes, you really believe as many people would still be buying?

Peace

[edited by - krippy2k on January 27, 2004 9:35:55 AM]

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.