Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion omvll/_index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
+++
title = "O-MVLL Documentation"
description = "O-MVLL is an LLVM-based obfuscator driven by a user-friendly Python API. It supports C/C++/Objective C."
description = "O-MVLL is an LLVM-based obfuscator driven by a user-friendly Python API. It supports C/C++/Objective-C/Swift."
name = "O-MVLL"
token = "omvll"
logo = "static/img/omvll/logo.svg"
Expand Down
3 changes: 2 additions & 1 deletion omvll/introduction/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ Welcome to the O-MVLL documentation. This documentation is split into three sect
3. The last section, [other topics]({{< ref "/omvll/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
O-MVLL is an obfuscator based on LLVM that uses the new LLVM pass manager, and `-fpass-plugin` / `-load-pass-plugin`
command options, respectively for Clang and Swift compilers (starting with Xcode 26), are leveraged to perform
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds a bit convoluted to me. What about

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 in the Swift compiler (starting with Xcode 26) to perform native code obfuscation.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here I'd add a note saying something like "throughout this docu, whenever we refer to Clang we mean the host compiler being used, which can be Clang or the Swift compiler"

native code obfuscation. These obfuscation rules are driven by a Python API defined as follows:

{{< alert type="danger" icon="fa-light fa-microchip">}}
Expand Down
13 changes: 9 additions & 4 deletions omvll/introduction/getting-started/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,24 @@ weight = 10

O-MVLL is a code obfuscator based on LLVM and designed to work with Android and iOS toolchains.
It supports AArch64 and AArch32 as target architectures. Theoretically, it could be run as
simply as using the compiler flag `-fpass-plugin=`, as follows:
simply as using the Clang compiler flag `-fpass-plugin=`, or, starting with Xcode 26, on Swift
projects via the Swift compiler's `-load-pass-plugin=` option, as follows:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't need to repeat the Xcode26 minimum version again:

simply as using the compiler flag -fpass-plugin= (-load-pass-plugin= in Swift), as follows:

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Much better, updated, thanks!


```cpp
# Create/edit './omvll_config.py' to configure the obfuscator and run:
# Create/edit './omvll_config.py' to configure the obfuscator and
# run Clang for C/C++/Objective-C projects:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

# Create/edit './omvll_config.py' to configure the obfuscator and run:
# For C/C++/Objective-C projects:

$ clang -fpass-plugin=OMVLL.{so, dylib} main.c -o main

# For Swift projects:
$ swiftc -load-pass-plugin=OMVLL.{dylib} main.swift -o main
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no need for curly braces around dylib

```

**Practically, there are additional configuration steps.**


### O-MVLL Configuration File

Firstly, the O-MVLL Python configuration file is not always located next to the clang binary and we might want
We refer to the Clang compiler (`-fpass-plugin` option) for the configuration, though the same applies to Swift.
Firstly, the O-MVLL Python configuration file is not always located next to the compiler binary and we might want
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd add the note I mentioned above ("throughout this docu, whenever we refer to Clang we mean the host compiler being used, which can be Clang or the Swift compiler") and undo this change

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense, undone here, thanks.

to change the name of the file.

By default, O-MVLL tries to import `omvll_config.py` from **the current directory** in which **clang is called**.
Expand Down