Home » Support » User Manual » Frequently Asked Questions

Frequently Asked Questions

Ordering VMProtect

If I order VMProtect, will I be able to use it on different computers?
You can install and use VMProtect on any number of computers you want and need for your work.

What is a difference between Personal and Company licenses, and which license should I prefer?
The only difference between these license types is who owns them. If you are a private developer, choose the Personal license. If you represent a company or plan to use the product in your organization, select the Company license.

How the full version of VMProtect is delivered upon purchase?
The full version (and all further updates of VMProtect within the one-year subscription) are delivered to your e-mail address. A message contains a link to the archive containing installer of the full version of VMProtect. That is why we recommend turning off all spam filters in the settings of your mailbox before purchasing VMProtect.

Will I receive new versions of VMProtect for free or they should be purchased individually?
After purchase you are eligible for all new versions within one year after the date of purchase. When this period expiresm you can renew your annual subscription or continue using the version of VMProtect you have without any restrictions.

Can I pay for VMProtect with my credit card or PayPal?
You can purchase VMProtect with a credit card or PayPal. To do this, select the desired version of VMProtect at the order page and then choose a credit card or PayPal as your payment method.

General questions

Is there a way to encrypt strings and data arrays automatically?
In VMProtect you can hide ANSI constants and Unicode constants. All other data the code operates with remain intact. We recommend storing all confidential information encrypted and decrypt it directly 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 100% multi-thread compatible and there are no any specific limitations for this type of protection.

Can I use VMProtect along with another protector (packer)?
Using any other packers (protectors) after a file is processed by VMProtect can render the protected application non-functional.

Should I include VMProtectSDK32.dll/VMProtectSDK64.dll into the setup package of the program?
These libraries are only used at the debug stage of the program (before protecting it). After you protect the application with VMProtect all information about usage of these DLLs is removed completely, so you don’t have to include them into the release package.

Compiler messages

What does this error mean: VMProtectMarker “ToolButton1Click.1″.0044327D: Address is used by procedure “TForm1.ToolButton1Click”?
This error means the same command at the address 0044327D is used in two procedures that are included into the list of protected objects. To solve this issue, you should exclude one of procedures (in this particular case these are VMProtectMarker “ToolButton1Click.1″ and 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 the procedure TForm1.Test is too small and cannot be protected. To solve this issue, exclude this procedure from the list of protected objects.

What does this warning mean: TForm1.ToolButton1Click.00443368: Inner address jump: 00443337?
The following warning means a possible jump from the unprotected code fragment into the protected code fragment is detected. Such jump may cause malfunction of the protected program. To solve the issue, mark the 00443337 address as external.

What does this error mean: The “.text” section allocates space required for the new section?
The following error usually take place when drivers are protected. It means that free space between the first section of the file and service information in the header of the file is too small to create a new section To solve this problem, increase the value of the section alignment parameter in driver’s source codes and rebuild the driver completely. (For example: if you compile the driver using WDK/DDK, you should add DRIVER_ALIGNMENT=0×200 into SOURCES).