Quote: "When something is human-made, a human can desengineer it. End of story."
fairly sure the words you were looking for were "reverse-engineer"
still it's true, you can't 100% protect from hackers
what you can do is create a system that makes it more difficult than is worth to crack.
it might sound odd, but Halo 2 for Vista took 2weeks to crack; where-as Peggles took under a day. the fact is the more popular your game the more likely someone will figure out a way to pirate.
So far Valve have one of the best anti-piracy systems.
Not because it's uncrackable, but actually more because it can detect when someone has cracked it; and then ban that user.
The downside of their system is you *must* be online to play their games, even if they're offline games. Or atleast the ones they care about preventing piracy (ie Half-Life 2)
How they do it is the game is stored in an Encrypted folder/file, which the free parts (the bits that are available for demos or just the main cacheable section) are fairly unprotected. That important parts, that change it into a full-game are protected via a user-end hashkey and a server-end hashkey.
The user-end one is linked to your hardware, meaning you can't simply copy the files across without having the exact same hardware. Preventing a simple copy once unlocked, the server-end one prevents Steam from running the game if the user-end and server-end keys are damaged or missing.
It's fairly simple, but quite difficult to break without a real-time cracker.. if such a thing is detected then that users account is terminated immediately pending an investigation as to why.
A system I've been personally tinkering with on/off for a year or so, is one where the files are stored in a hidden hard disk partition that is expanded as and when it is needed to. The protection system runs from this hidden partition, and is hardware based protection thanks to AES. Can't say that I've got that particular system working well, as XP/2000 tends to corrupt the primary partition with it; but it works nicely under most Linux and Vista variations.
The simplist system that really would be enough for most independant games, that I'd go with would be similar to Steams. Only rather than online; just check against the hardware once the online unlock has been verified. It's fairly simple to get the serial number of hard-disks and processors, I believe Extends actually allows you to do that too. Throw in the authentication key and MD5 hash.. safe enough to deter most unless it gets extremely popular.