I guess Num3 has the best idea here. Write into the registry, create dummy
files etc. Make it sufficiently complex that it is not worth anyone's time
ripping all this stuff out.
Then again, crackers are likely to be sad individuals with a lot of time on their hands.
Perhaps a better plan is to create software that needs continual update,
for example like PureBasic, or maybe needs continual access to a database
that is kept up to date. In addition, change the download frequently
so that you know who owns each copy. It is then not in the crackers
interest to post a working program because it will contain evidence of
his identity and allow you to bar updates for his software and for the
version he has posted.
The part of the code which contains its identity can be subtle. It could be
a few bits in a bitmap or some extra values in a data file. Since the program
doesn't check this information, it will be impossible for the cracker to
know that it exists.