Organic
I had this cool idea that should make software more effective against cracks and hacks that I got from thinking about the Red Queen problem between hackers and game developers. While on the beach in Kirkland, but that’s another story.
Treat software as if it were a living organism. Don’t bother with details about how it works under the hood. Write unit tests that will kill the poorly performing ones. This is the way that the real world works, in that some individuals die or get eaten and some don’t, and the reasons why aren’t really important so long as the results (not dying) get met. You create (or write software that creates) masses of unit tests, and cross breed the individuals that pass or work more effectively.
Then, and this is the key, when you hand out the software, hand out several different strains of the software. If someone finds a crack for one particular strain, it won’t work on the others. Not only that, but once you know about the crack you can add it as a unit test and breed different strains that are guaranteed to work the same as the original. This would work better because software is a monoculture these days; all current versions are vulnerable to the same hacks.
You could even automate the process by breeding for ‘predators’ which are designed to subvert the original software. It would take masses of CPU power, but eventually you’d find something that worked.
The problem with this idea is that it assumes crackers don’t have access to massive amounts of CPU power. In fact, they probably have more access than the legit developers. There’s a heck of a lot of zombie boxes out there.