General questions
Is there a way to automatically encrypt strings and data arrays?
In VMProtect, you can hide ANSI constants and Unicode constants. All other data the code operates with remains intact. We recommend storing all sensitive information in encrypted form and decrypting it immediately before use. The unpacker itself can be virtualized.
Is there a way to protect procedures that I call from various threads in my application?
VMProtect is fully multi-thread compatible, and there are no specific limitations for this type of protection.
Can I use VMProtect along with another protector (packer)?
Using other packers (protectors) after a file has been processed by VMProtect may render the protected application non-functional.
Should I include VMProtectSDK32.dll/VMProtectSDK64.dll in the setup package of the program?
These libraries are only used at the debug stage of development (before protection). After you protect the application with VMProtect, all information about the usage of these DLLs is removed completely, so you do not need to include them in the release package.
Compiler messages
What does this error mean: VMProtectMarker “ToolButton1Click.1”.0044327D: Address is used by procedure “TForm1.ToolButton1Click”?
This error means that the same command at address 0044327D is used in two procedures that are included in the list of protected objects. To resolve this issue, you should exclude one of the procedures (in this case, VMProtectMarker “ToolButton1Click.1” or TForm1.ToolButton1Click) from the list of protected objects.
What does this error mean: [Error] TForm1.Test.004433F4: Minimum procedure size for compilation is 5 bytes?
This error means that the procedure TForm1.Test is too small and cannot be protected. To resolve this issue, exclude this procedure from the list of protected objects.
What does this error mean: The “.text” section does not allocate enough space required for the new section?
This error usually occurs when protecting drivers. It means that the free space between the first section of the file and the service information in the file header is too small to create a new section. To solve this problem, increase the section alignment parameter in the driver’s source code and rebuild the driver completely. (For example: if you compile the driver using WDK/DDK, you should add DRIVER_ALIGNMENT=0x200 into SOURCES).