mitchellmckain,
Nice tutorial on win32 although MS's weakpoints have always been their APIs and it's good to know your a physics teacher, you'll find programmers need someone handy like that around.
I have to say that your method has it's flaws. I've given up Reverse Engineering, well partially, other than to understand how programs work but I use to break software copy protection all the time, it was for the challenge more than anything or how I would put it, I was a bored teenager looking for something to waste my time on.
I can tell by your method, that
1) It is going to generate a number from something from the users computer, which is most likely going to be unique from someone elses computer. A lot of software companies tried and failed this method.
2) This number is sent to you, in which you generate the key from their number sent to return back to them the key that registers the program. Again another tried and failed attempt.
To say what will happen if someone attempts to break your protection is quite easy, they will discover how the number is generated, since the key you use is based on their key, they will also find in your program how your key would be checked against their key, which pretty much shows them how they will generate your keys without requiring your input. Obviously your program will have to contain the same information you use to check against being a valid key or not, since there would be no other means of actually checking your key if otherwise. (or is there?)
I have to say, software protection is really a time wasted effort, if someone wants to get in they will. Although I can tell you methods that are quite effective in at least making sure that not everyone is capable of breaking it, but the end result usually is, if it gets broken into once, once is enough, soon the answer is circulating around the web and now everyone will be capable of breaking it.
If you really want help in making your software as protected as it could be, write your protection in a crackme, submit it to a crackme site and get people to crack your software and they will write solutions to how they did it. Read their solutions thoroughly and then work on how to fix the problem, you may continue submitting altered crackmes until finally it becomes unsolved, when it reaches this stage, you know you've got a fair chance, but don't put everything on it saying it's unbreakable.
The methods that I had difficulties in solving usually were the results of finding multiple keys in multiple parts while being lead on and on and on, while also having to refer back to whether a flag was set or not set. The cryptography or even just advanced mathematics could set code crackers back and forth. The longer you keep this up, the least likely anyone would be willing to crack it unless it is important but as I say, it's not 100% foolproof, it's just more time consuming than anything.
You could work on your anti-debugger/disassembler, pack your software, etc.
In the end it comes down to what you think, would your rather work on fixing your program, or spend endless efforts on protecting it? If you spend endless efforts on protecting it, there are some people who spend endless efforts on unprotecting it.
Cheers,
MC
Comment/Reply (w/o sign-up)