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 LLVM-based obfuscator that leverages the new LLVM pass manager. It integrates via
-fpass-plugin in Clang or -load-pass-plugin option in the Swift compiler (starting with Xcode 26)
to perform native code obfuscation. The obfuscation rules are driven by a Python API defined as follows:
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"
Throughout this documentation, we use Clang to refer to the host compiler, which can be either Clang or the Swift compiler.