Good Day,
I don't know if it already exists and I couldn't find it. But I think It would be very useful have a basic guide with the Best Practices for each kind of Application:
Win32 Portable Executable file (*.exe);
Windows Screen saver files (*.scr);
Dynamic Link Libraries (*.dll);
32 bit ActiveX control files (*.ocx);
.NET executables (*.exe).
In my particular case I would like to see Best Practices for a .Net Framework 4.0 Application.
For example, which is the best combination of Features, Protection, Hardware Lock and others options for a .Net Framework 4.0 Application.
TIA and Kind Regards
Gianfranco
Best Practices Guide
Re: Best Practices Guide
Hi Gianfranco,
This does not matter what framework version your application uses, the recommendation are same for all fw versions.
The most common recommendation is integration of program into protection.
The better method for .net is if you move some functionality of your program into unmanaged dll (call this unmanaged dll from your NET application) and then protect it using VM_Markers (code virtualization). Next, you may add this dll into Virtual Box to hide it. For example, if your NET application has some encryption algorithm (or any other code), move it to unmanaged dll, around with vm_markers and then protect.
Also, the following features can be used:
1. Virtual Box feature. Hide .dll dependences in it, or all other files.
2. Use different Enigma API functions. When you make a call to Enigma API, program refers to protection, if protected does not exist (file is cracked/unpacked) you will get an exception or unsuccessful result. For example, you may call functions like EP_CheckupIsEnigmaOk/EP_CheckupIsProtected and check if a result is true. If you are licensing or trial features, then use Enigma API to check license/trial status.
3. Use Protection Features - Protected Strings. Carry all strings from the code to protection, and extract necessary when it is needed. In this case, imagine if protection will be removed, no strings will be returned, and program will not work.
4. Use some unique protection techniques. For example, add a string in Miscellaneous - Environment Variable and check if it exists. If does not exist, then protection removed, then you should terminate application. Use delayed termination, i.e. not after check, but after few seconds.
This does not matter what framework version your application uses, the recommendation are same for all fw versions.
The most common recommendation is integration of program into protection.
The better method for .net is if you move some functionality of your program into unmanaged dll (call this unmanaged dll from your NET application) and then protect it using VM_Markers (code virtualization). Next, you may add this dll into Virtual Box to hide it. For example, if your NET application has some encryption algorithm (or any other code), move it to unmanaged dll, around with vm_markers and then protect.
Also, the following features can be used:
1. Virtual Box feature. Hide .dll dependences in it, or all other files.
2. Use different Enigma API functions. When you make a call to Enigma API, program refers to protection, if protected does not exist (file is cracked/unpacked) you will get an exception or unsuccessful result. For example, you may call functions like EP_CheckupIsEnigmaOk/EP_CheckupIsProtected and check if a result is true. If you are licensing or trial features, then use Enigma API to check license/trial status.
3. Use Protection Features - Protected Strings. Carry all strings from the code to protection, and extract necessary when it is needed. In this case, imagine if protection will be removed, no strings will be returned, and program will not work.
4. Use some unique protection techniques. For example, add a string in Miscellaneous - Environment Variable and check if it exists. If does not exist, then protection removed, then you should terminate application. Use delayed termination, i.e. not after check, but after few seconds.
Re: Best Practices Guide
Thanks for the excellent explanation.
