Just been talking to
David about a piece of shareware that he is developing. He has got to the point where he is about to deploy it in the real world and is starting to consider how to protect it from theft. There are loads of nasty issues here and you end up having to consider encryption, keys, obfuscation and the like to make sure that nobody can copy your neat idea.
My take on this is that when your program detects that it has been copied it still works. For a while. Then, after half an hour or so, it stops working with the "Illegal Copy" message. This means that someone who is trying to steal your code has a much more difficult job. Rather than "crack it till it works" they have to crack it, try it for a while and can never really be sure whether or not they have successfully copied the program.
The only downside is that if your nasty pirate sells the copied program on you will get lots of support calls from people whose program has suddenly stopped working for no good reason (as far as they are concerned). But I still think it has potential.