Introduction
Welcome to the O-MVLL documentation. This documentation is split into three sections:
This first section, Introduction, is about how to use and how to get started with O-MVLL.
The second section, obfuscation passes, describes the different obfuscation passes available in O-MVLL.
The last section, other topics, contains different information for those who are already familiar with the project.
O-MVLL is an obfuscator based on LLVM that uses the new LLVM pass manager, -fpass-plugin
to perform
native code obfuscation. These obfuscation rules are driven by a Python API defined as follows:
As of now, O-MVLL only supports the AArch64 architecture.
import omvll
class MyConfig(omvll.ObfuscationConfig):
def __init__(self):
super().__init__()
def flatten_cfg(self, mod: omvll.Module, func: omvll.Function):
if func.name == "check_password":
return True
return False
def obfuscate_string(self, _, __, string: bytes):
if string.startswith(b"/home") and string.endswith(b".cpp"):
return "REDACTED"