There was a videogame that got famous because it was pirated, it was a management game about setting up a gaming company.
Turns out, the pirated copy had a special feature where the player would feel immense economic pressure from piracy, so a bunch of players asked how to win against this, it was pretty hard and really fun for people who knew what was going on.
Point is, you could hide an Easter Egg for pirated versions (can you detect the lack of signatures?)
It's important to note that they didn't use DRM or anything like that to detect whether a given copy of it was pirated. They made two builds of the game: a normal one that they gave to paying customers, and the special one that they uploaded a torrent of themselves.
I love this approach. If you can detect a crack and block it, it will get worked around. Injecting easter eggs is much more subtle. There was another game that made an otherwise easy jump between two platforms impossible, so the players who had cracked the game went on forums and unwittingly revealed themselves by asking how to complete that level.
> "I've got a problem when it's time to use Batman's glide in the game," said user Cheshirec_The_Cat, whose appalling spelling we felt we needed to clean up. "When I hold [the button], like it says, to jump from one platform to another, Batman tries to open his wings again and again instead of gliding. So he falls down in the poison gas. Can somebody could tell me, what I should do there?"
We have implemented something similar.
The most obvious way to crack our software will trigger certain bug.
Whenever people report that bug I feel a little joy
> Whenever people report that bug I feel a little joy
I hope you are super duper 100% sure the bug can’t happen otherwise. I would hate to be your paying costumer and ignored because your drm system is buggy.
It's something along the lines of:
Pi+=2 in one place of the code.
And Pi += 1.1415 somewhere else. And both are guaranteed to run at the start of the program so that Pi=3.1415
However one of those lines is hidden in a part of the code that the most obvious crack is going to remove.
It's a good way to do it! The less obvious it is that there is a remaining check hidden, the better. Some games would become impossible to win, but only halfway through or worse. Sometimes with multiple layers hidden in different places that fail at different moment.
I cracked an expensive FPGA simulation program (for which I had the license, but the FlexLM scheme based on the MAC address of the adapter was just too annoying to get working on Linux).
What they would do is have a sort of unit test of their license verification function at runtime. There was a check hidden somewhere that I never found, and if the license verification was changed to always return true, the unit test would fail. The simulator would continue working within a single module, but as soon as you tried simulating a larger project, it would return undefined values between all the modules, rendering the simulation unusable for any real project =)
(I solved the unit test by having the license check return true only for my hardcoded serial number, which is definitely easier than hunting for the different places where a check might be hidden)
The hilarious thing about this is that this might have different behaviors across architectures or optimization levels if you do a bad floating point compare...
The obvious risk with that approach is that if people do not realize that this applies only to the pirated version, you're risking bad reviews, which can cost you actual sales (you don't win anything just by keeping people from pirating your software, you only win if someone who is willing to buy but prefers to pirate chooses to buy instead).
I believe there were several games that had a reputation for being horribly buggy that was at least partially the result of pirated versions having bugs intentionally introduced by the copy protection.
I believe the game you mentioned made it really obvious what was happening and why to avoid that.
> The obvious risk with that approach is that if people do not realize that this applies only to the pirated version, you're risking bad reviews, which can cost you actual sales (you don't win anything just by keeping people from pirating your software, you only win if someone who is willing to buy but prefers to pirate chooses to buy instead).
Any time I've seen game devs try it the comments under those people were "you fix it by buying the game pirate".
And platforms like Steam allow you to review only bought games anyway
Long ago, I helped distribute cracks and reverse engineered servers for warcraft 3 alpha. One of the biggest issues in the cat and mouse game was when blizzard introduced 2 invisible golems that would attack your base. That took the crackers much longer to fix than other updates.
That kind of thing is a cute idea but that specific example has always bothered me because it implies the devs really think that piracy is a catastrophe for sales.
It was later added it to the paid copy of the game and it's similar to a 'very hard' difficulty where the normal strategies of development don't apply and you have to include DRM most of the time to break even on per-game costs. Completing it was a difficult achievement.
I think a fundamental aspect of cracking consists of disabling such detection mechanisms. But if the cracker only digs far enough to ensure that it seems to work without nags, and not far enough to find Easter eggs, then it will probably work for a while until people catch on and demand a further crack.
It's really the OS that needs to detect a lack of expected signature, because the cracker isn't going to be able to disable an OS feature unless they release the cracked app as a while VM or something. But that's a thing...
Depending on the nature of the app a suitable easter egg may be that over time the outputs become randomly but subtly incorrect. Another technique is to canary mark outputs in some way (like a tell tale unique string in PDF/export outputs). In this way your sales team may be able to search for those outputs and put pressure on large orgs creating those files.
One of the Command and Conquer games (Red Alert 2?) would blow up your MCV 30 (or thereabouts) seconds into a game if it detected piracy. Funny, albeit, entirely less subtle.
The pirated version had a different name for one of the mannequins, but people loved the quote and the acting for yelling out the name of the mannequin in the movie, so that led to people would arguing in internet comments about the name used and you could get a feel for how prevalent the piracy was by upvotes
Crysis 3 would let you play an hour or two and then some special weapon wouldn't have ammunition essentially soft-locking you out. Great way to sell too.
Mirrors Edge too. You'd get through the first couple of levels then she'd just slowly come to a halt right before the ledge and you couldn't move anymore.
Turns out, the pirated copy had a special feature where the player would feel immense economic pressure from piracy, so a bunch of players asked how to win against this, it was pretty hard and really fun for people who knew what was going on.
Point is, you could hide an Easter Egg for pirated versions (can you detect the lack of signatures?)