Markers and C++

Post here any topics that related to Enigma Protector, its functionality, your misunderstanding, offers to improvements etc etc etc
Post Reply
Ajax
Posts: 14
Joined: Tue May 27, 2014 1:36 am

Markers and C++

Post by Ajax »

Hello!

I'm starting to use markers to protect sections of C++ code and have some doubts on their limitations:

1. Can multiple functions be enclosed in a single 'begin' and 'end' marker pair?

2. Can a class be marked for protection?

4. Could a hole file be marked for protection using a single 'begin' and 'end' marker pair?

5. About not being able to enclose a "return;" statement (link), is it alright if the statement returns some value? It appears there are some cases where the "return" statement can be used (link).
Enigma
Site Admin
Posts: 2938
Joined: Wed Aug 20, 2008 2:24 pm

Re: Markers and C++

Post by Enigma »

Hi Ajax, regarding your questions:
Ajax wrote:1. Can multiple functions be enclosed in a single 'begin' and 'end' marker pair?
Sure, not just "can" but "should", you should enclose as many functions with the markers as possible.
Also we recommend you to use vm_risc_begin/vm_risc_end markers only as they provide a maximum protection.
Ajax wrote:2. Can a class be marked for protection?
For whole class protection we recommend to use map file with the Virtual Machine - Functions Selecting feature. There you may find all class functions with the filter function and select them. Please note, in case of protection of multiple functions, the resulting exe may be large enough and protection can take much time, so you may set the option Virtual Machine - Settings - Classic VM to reduce the file size and protection time for functions selected from the map file.
Ajax wrote:4. Could a hole file be marked for protection using a single 'begin' and 'end' marker pair?
No, only particular part of the code can be selected.
Ajax wrote:5. About not being able to enclose a "return;" statement (link), is it alright if the statement returns some value? It appears there are some cases where the "return" statement can be used (link).
The return can't be used for all markers, except vm_begin/vm_end and vm_risc_begin/vm_risc_end
Ajax
Posts: 14
Joined: Tue May 27, 2014 1:36 am

Re: Markers and C++

Post by Ajax »

Thank you for clarifying these points.

Just a few more questions,
1. The VM markers are also useful for protecting strings? In other words, are strings within this section of code also encoded or should we take other protection measures?

2. I used the Virtual Machine - Functions with a generated MAP file. Turned out to be very convenient, but there are many missing functions which I can find within the MAP file but not in Enigma's Functions table. These missing functions are static and are located at the file level (not members of a class), without any specified name space. Is there a way to make these functions also available on the Functions table?

Here are some suggestions on how I think the Functions Selection window can be improved:
-In accurate Selecting, allow the use of regular expressions on the "Enter Filter Expression" text box
-To be able to check or uncheck all the displayed functions at once
Enigma
Site Admin
Posts: 2938
Joined: Wed Aug 20, 2008 2:24 pm

Re: Markers and C++

Post by Enigma »

Ajax wrote:1. The VM markers are also useful for protecting strings? In other words, are strings within this section of code also encoded or should we take other protection measures?
No, VM markers protect only code, not strings. You may protect strings using Protection Features - Protected Strings feature.
Ajax wrote:2. I used the Virtual Machine - Functions with a generated MAP file. Turned out to be very convenient, but there are many missing functions which I can find within the MAP file but not in Enigma's Functions table. These missing functions are static and are located at the file level (not members of a class), without any specified name space. Is there a way to make these functions also available on the Functions table?
Sure, we can investigate it and let you know what could be wrong there. Can you please send us the test file + map file and let us know what functions exactly do you think are missed.

Btw, there is a limitation that functions with the size less than 5 bytes can't be virtualized. For example, if some function just returns some static value, like "return 5;", such function will be lesst than 5 bytes in size and so can't be virtualized.
Ajax wrote:-To be able to check or uncheck all the displayed functions at once
I think this is already possible, in the Functions Selecting panel right click on the functions list, there are options you are asking for.
Post Reply