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).
Markers and C++
Re: Markers and C++
Hi Ajax, regarding your questions:
Also we recommend you to use vm_risc_begin/vm_risc_end markers only as they provide a maximum protection.
Sure, not just "can" but "should", you should enclose as many functions with the markers as possible.Ajax wrote:1. Can multiple functions be enclosed in a single 'begin' and 'end' marker pair?
Also we recommend you to use vm_risc_begin/vm_risc_end markers only as they provide a maximum 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:2. Can a class be marked for protection?
No, only particular part of the code can be selected.Ajax wrote:4. Could a hole file be marked for protection using a single 'begin' and 'end' marker pair?
The return can't be used for all markers, except vm_begin/vm_end and vm_risc_begin/vm_risc_endAjax 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).
Re: Markers and C++
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
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
Re: Markers and C++
No, VM markers protect only code, not strings. You may protect strings using Protection Features - Protected Strings feature.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?
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.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?
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.
I think this is already possible, in the Functions Selecting panel right click on the functions list, there are options you are asking for.Ajax wrote:-To be able to check or uncheck all the displayed functions at once