Hi everyone.
I'm implementing a locking and copy protection system for my software. I've shut every hole that would allow someone to break my lock (well, that's a little too optimistic, I know!) but the last thing is this:
I hear crackers can change Windows DLLs like Kernel32.dll in a way that the API I use returns a value which is specified by the cracker. I need to prevent this.
At first I thought I could make a hash value for every DLL I use, and check that hash against the calculated hash of the client DLL to see if the file is changed. That won't work since there are many different versions of the DLL for different versions of Windows, and every hotfix and Service Pack provided by Microsoft could change the file.
Then I realized I could check the signature of the file to make sure it has a valid Microsoft signature. Now there are 2 questions:
- Does Microsoft sign Windows DLLs? How can I find some info on this signature?
- Is a Public key provided to validate the signature? How do I use this key to validate the file?
Any walkthroughs are greatly appreciated. My app is written using Visual Basic.NET.
Thanks guys.