My client has a Flash projector EXE and he wants to set-up an on-line serial number control system so he can sell it on-line.
The key problem in this project, as far as i see, that the exe is required to run on only one computer.
My current plan is below:
- Request the serial number from user before the installment and check whether it is okay.
- If it is okay, generate a hash from a number of unique hardware constants. Match it with server and see if the application was installed on this machine before.
- If not, or it is the same machine as before, allow the installer to continue.
- After installment, put the hardware hash into the registry.
- Create a loader EXE, place the Flash EXE into it as a resource.
- In loader EXE, check if the registry has the hardware hash and it is the correct hardware we're running on.
- If the hardware hash is correct, extract he resource (Flash Exe) to a hidden path and execute it with CreateProcess.
Now, i'm aware of that there is a serious security flaw in this workflow. When i extract the resource exe and execute it. It would be visible to any user looking to the Task Manager. So he/she could reach his hand and grab it!
How can i improve my approach? At least to an acceptable point?
Thanks.
P.S. This application has similar functionality: http://www.increditools.com/flash_exe_builder/index.php in terms of protection and serial-number.