Shareware is software that is distributed for free, but with a software license that often requires the end-user to either pay for, or "register" the software after a set period of time, or remove the software.
All shareware includes some sort of license agreement, stating among other things how long you can use the software and generally forbidden [reverse engineering] or [decompilation], since doing so would allow for the program to be altered so that the shareware limitations are removed or the expiration times are extended.
Early protection methods
Shareware employs a variety of different protection methods. Early on, some shareware was released with the missing functionality not even in the shareware executable file. If the user wanted the full program, they were required to contact the author of the software and arrange for payment. They would then receive the full version of the program in whatever format was in use at the time.
Newer protection methods
While executable files without the full feature set were very secure, this practice was more tedious for the potential shareware customer. This fact, coupled with increases in security toolkits, made it possible for software developers to release shareware with the full feature set in the distributed program, but with certain features turned off or time limits placed on the software. In order to unlock the full features of the program, users still had to register their software. Instead of receiving a new program file, a license key was given to the user to enter on a specific screen.
Once registration keys came into common use, the hacker culture started figuring our how to bypass the registration key checks. Inspection of the binary executable file often yielded the algorithm used to generate the registration key, allowing for key generator programs to be written and distributed across the internet. Some hackers implanted [computer virus]es or other types of malicious software into their key generators. Other sites listed the license keys.