Welcome to the crackig game In the past, our licensing scheme was rather simple. It was broken. Not just broken, someone could reverse egineer it up to the point he could create arbitrary licenses - a keygen. When we first saw, it was a shocking discovery. We thought we had such a clever method, nobody can ever guess that by stepping throught assembly code - we were wrong. No matter how smart you are, someone is probaby smarter than you.
No time to sit around and cry - we replaced our licensing code with a completely new one. The code itself which is still the best code we have ever written IMHO, zero bugs found so far (afer years of usage), robust to the ground, not a single byte memory leakage has been written in only two weeks (actually it was done in one weak, one week was just fine tuning and adding a couple of desired features to it). We consider this code unbreakable and so far it has been unbreakable (okay, every code can be broken in theory, but this one is really a hard nut to crack).
Great, we had an (almost) unbreakable licensing scheme, so we won, didn't we? - Nope. Crackers came and said "Hey, why breaking the licensing code itself - it's way too hard. Let's break the code around it". Unfortunately we can't secure all the rest of our code as perfectly as we did with the licensing code. So instead of serials, crackers started releasing binary patches.
And that's where the real game starts. We release updates frequently, so writing a patch for every minor update would have killed the crackers. Instead, they wrote universal cracks. Cracks that try to identify certain code patters and work around them. These cracks keep woring, even if 60% of the whole code has changed between two updates, as long as they can still find the patters they are looking for. So we try to break their pattern matching and they try to identify new patters.
It's a game neither side can win, unless either side gives up completely. We won't give up, we earn our living that way. Crackers earn nothing but reputation, nobody pays them for it, but they seem to have their fun. Right now we are on top. We recently did something rather clever (I had to think about it, when I read your blog post) and so far this seems to give crackers some headache. At least no cracks floating around for quite a while now (months). However, we are realistic. It is only a matter of time till someone will spot the trick and work around it. Sometimes this game is annoying, but sometimes it's fun. I love to read discussions of crackers discussing our code and how to break it. It's so funny if you listen to what they assume and how they think stuff works, if you in fact knows what's really going on