Global Configuration#

omvll.config#

Attribute associated with the omvll.config_t object

class omvll.config_t#

This class is used to configure the global behavior of O-MVLL.

It can be accessed through the global omvll.config attribute

property inline_jni_wrappers#

This boolean attribute is used to force inlining JNI C++ wrapper. For instance GetStringChars:

const jchar* GetStringChars(jstring string, jboolean* isCopy)
{ return functions->GetStringChars(this, string, isCopy); }

The default value is True.

property passes#

This ordered list contains the sequence of the obfuscation passes that must be used. It should not be modified unless you know what you do.

This attribute is set by default to these values:

  1. omvll::AntiHook
  2. omvll::StringEncoding
  3. omvll::OpaqueFieldAccess
  4. omvll::ControlFlowFlattening
  5. omvll::BreakControlFlow
  6. omvll::OpaqueConstants
  7. omvll::Arithmetic
  8. omvll::Cleaning

property shuffle_functions#

Whether the postition of Module’s functions should be shuffled.

This randomization is used to avoid the same (relative) position of the functions for two different builds of the protected binary.

For instance, if the original source code is composed of the following functions:

void hello();
void hello_world();
void say_hi();

In the final (stripped) binary, the functions appear as the following sequence:

sub_3455() // hello
sub_8A74() // hello_world
sub_AF34() // say_hi

If this value is set to True (which is the default value), the sequence is randomized.