You can also use a CRC (cyclic redundancy check) check or the MD5 checksum to detect if your main application EXE is cracked. This involves a bit more work like the CRC Check of the DLL but adds additional security.The check could be done as follows.
•Store the CRC value of your EXE file in a separate license file, which you name e.g. myapp.idx. A separate license file is necessary because you have to update this file every time you make a new compile of your EXE file. If you update the EXE file you always have to include the file which contains the CRC check in your update
•At the application start, first check the CRC value of the DLL
•Retrieve the CRC value of the EXE from the license file
•Check your EXE file
•In case the CRC is wrong let your application crash or hang - but not directly after the CRC check
Tip: You can store multiple CRC values to test different EXE files. Either add all values in one field or use a module for each TAG value.
Make a new license file template which uses a different Project Key (Read/Write Key). Store the CRC value of your EXE file in the field TagValue of the node <Default>. You need to define a default module although you would not use it.
Load the file into the Generator and save it as myapp.idx.
You have to open the file myapp.idx (without user interface), retrieve the TagValue and then close the file. Use these commands:
•Quit
Now retrieve the CRC value of your EXE file - how to retrieve the CRC see CRC Check of the Licence Protector DLL. You could use GetCRC32 value if first checked the DLL to be sure that it is not cracked.
If the CRC does not match, continue your application but let it crash, hang or just terminate later.
Tip: You can create a tool to update the myapp.idx file with the latest CRC value of your EXE.
•Retrieve CRC value of the EXE with GetCRC32
•Quit
The MD5 CRC check is more stronger than the CRC32. If security is a main issue use MD5.