I have a program written on c# for windows. The program is a helper, which grabs information from another program (from a game) then processes it and then saves it into text files.
I've decided to sell the program and because of this I need a licensing system added to it. The main objective of licensing system is protection from piracy. I need a somewhat strong protection that cannot be cracked or bypassed within several hours of work of a competent specialist. I am also considering to hire another person who will test the program's security by trying to crack it.
I'm not extremely competent in this area and looking forward for your suggestions on implementation but from what I know I think that the protection should include:
1. A licensing server that is queried by the program at the beginning of the work and then requeried during the work within some period of time. The server response either gives or denies permission for the program to run. It also sends the details regarding the parts of program that are allowed to work within current user's license. Obviously the server's response must not be easily changeable by a fake response from a different server.
2. It should include a debugger prevention system, i.e. the program should halt if a debugger is detected in the system.
3. Some portions of code of the program should be inserted directly to RAM and not be saved to the hard drive (they should be obtained from licensing server).
Previous developer doesn't have enough time to work on project so the decision was made to pick a new one. Previous developer is ready to spend some time consulting a new developer.
The project is dynamic and after the licensing is done I'm looking forward for you to continue work on it since there are several tasks that should be implemented. I expect that these tasks should take 10-15 hours/week.