Quick Jump Menu
There are no subcategories in this category.
1 I have put a VM macro in my "main()" function. Inside the VM_START/END markers I'm calling several functions. Are those called functions also virtualized?

Suppose the following example: int main(void) { ​ VM_START​ MyFunction1(); MyFunction2(); ​ return 0; VM_END } ​ In the above example you are protecting the code inside the "main()" function but not the code inside "Function1()" and "Function2()".…

2 I have a few Portuguese strings in my STR_ENCRYPT macro but some of them are not recognize when I click on the STR_ENCRYPT macro in the "Protection Macros" panel. What's wrong?

Themida/WinLicense search for printable chars to be able to determine if a pointer to "something" is a string or not. As your string might contain special Portuguese characters the internal function to determine if a specific char is printable might fail.…

3 Can I use one protection macro (VM macro) inside another macro (VM macro)?

You cannot put nested VM macros. The following is incorrect: void MyFunction() { VM_START // your code VM_START // <-- NESTED!!!! // your code VM_END VM_END } There is an exception for nested macros inside VM macros. You can put STR_ENCRYPT_START/END macros…

4 I'm using the STR_ENCRYPT_START/END macro to encrypt strings in my DLL but it always crashes when the string is accessed in runtime.

The problem is coming because your strings are relocated in memory in runtime, where the STR_ENCRYPT macro is not able to handle them. The STR_ENCRYPT macro was designed to be used as part of the VM macro, so you virtualize the code and all the strings referenced…

5 Since Themida 2.2.5 I can see that the time to generate the Virtual Machine takes much longer than previous versions. How can I make it faster?

In version 2.2.5 we added a new Virtual Machine model. This new VM model allows us to create different architectures with ease but the time to generate them is much longer as it's implemented in many layers to support all different architectures that can…

6 In the "custom_vms" folder I can see the name of the available virtual machines. Can I change the internal settings inside each ".vm" file?

We have inserted an internal CRC to avoid people changing the settings inside the .vm files. We normally deliver 3 files for each specific VM architecture. For example, the TIGER architecture contains: "Tiger white", "Tiger red" and "Tiger Black". The "white"…

7 Can I raise an exception inside a VM macro?

Yes, raising an exception is possible from VM macros.

8 I have seen that insertion of VM macros in try-except clauses are a bit tricky. What about try-finally clauses?

You have to insert VM macros in try-finally clauses in the same was as you do for try-except. Example: try { VM_START // your code VM_END } finally { VM_START // your code VM_END }

9 What happens if a CLEAR macro is re-executed again?

When the CLEAR is executed, the code inside the macro is filled with garbage code (random code) and it will write a jump from "CLEAR_START" to "CLEAR_END", so, if the macro is re-executed it will jump directly from START to END (so, the garbage code is not…

10 I get the following error "Error: There are at least a nested VM macros. VM macros cannot be nested." But I don't have any nested VM macros.

Please, check that you don't have ANY other macro inside your VM macros. For example, you cannot put an UNPROTECTED macro or any other different macro inside the VM_START - VM_END markers.

1 2 Next