Mixed Boolean-Arithmetic Obfuscation


Check out my series of blog posts.
You can find the code for this page (including the algorithm) here.
My initial (non-WASM) implementation with more features can be found here.
The current implementation only obfuscates linear MBA subexpressions and leaves the non-linear parts as is, which can be deobfuscated relatively easily. I am working on a non-linear version that works like the constant obfuscation at the end of the first blog post.

Some other things that are used during the obfuscation process:
Linear MBA: Implements only linear MBA but allows you to choose the rewrite operations.
Systems of Linear Equations mod n: Linear MBA rewriting at its core is solving such a linear system.
Permutation Polynomials: This lets you generate and invert binary permutation polynomials. They are not used in the obfuscation process (for now?) but the origin paper that introduced MBA mentions them as a way to generate non-linear MBA.