Hardware Locks?
When you have the source code to a 1 meg executable, it's easy to confound
dongle-crackers. Think about it: you could pepper the code with various
checks. You could make life a living hell for someone who actually tries to
*use* the program, by making the program die a million ways because the program
realizes that one of the million checks failed. The average pirate cracker
won't work the program hard enough to find each and every check. The casual
pirate will decide it's not worth it, and either stop using the cracked
program, or buy a regular copy.