Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. C/C++
  3. movfuscator

movfuscator

NOASSERTIONC

A C compiler that reduces programs to only 'mov' instructions, demonstrating Turing-completeness and enabling extreme obfuscation.

GitHubGitHub
10.6k stars442 forks0 contributors

What is movfuscator?

M/o/Vfuscator is a C compiler that translates programs into executables using only the x86 'mov' (move) instruction. It proves that 'mov' is Turing-complete, meaning any computation can be expressed through data movement alone. The compiler transforms arithmetic, logic, control flow, and function calls into complex sequences of 'mov' operations, creating heavily obfuscated binaries.

Target Audience

Low-level programmers, compiler enthusiasts, and security researchers interested in obfuscation techniques, unconventional computing models, or educational demonstrations of Turing-completeness.

Value Proposition

It offers a unique, extreme form of code obfuscation by eliminating traditional control flow and arithmetic instructions, making reverse engineering exceptionally difficult. As a proof-of-concept, it provides deep insights into compiler design and the theoretical limits of minimal instruction sets.

Overview

The single instruction C compiler

Use Cases

Best For

  • Creating heavily obfuscated binaries to deter reverse engineering
  • Educational demonstrations of Turing-completeness and compiler theory
  • Experimenting with unconventional computing models and minimal instruction sets
  • Researching control flow flattening and obfuscation techniques
  • Exploring the limits of the x86 architecture and single-instruction computing
  • Generating 'mov'-only programs for security challenges or CTF competitions

Not Ideal For

  • Production software where execution speed is critical, due to massive performance overhead from mov-only operations.
  • Modern C codebases using C99 or later features, as it only supports C89 and will error on syntax like bool or mid-block declarations.
  • Projects heavily reliant on external libraries without recompilation, because of ABI conflicts and unsupported function pointers to external functions.

Pros & Cons

Pros

Complete C89 Support

Handles a full C89 subset, including floating-point arithmetic via an optional emulation library (softfloat32.o, etc.), as specified in the README.

Extreme Control Flow Obfuscation

Implements jumps, loops, and function calls through mov operations, flattening control flow graphs and making reverse engineering exceptionally difficult, as shown in the overview images.

Flexible Post-Processing

Includes scripts to transform output into other minimal instruction sets like XOR or ADD, and RISC-like data transfers, enhancing obfuscation options for research or challenges.

Educational Proof-of-Concept

Demonstrates that mov is Turing-complete, providing deep insights into compiler theory and minimal instruction sets, inspired by Stephen Dolan's paper.

Cons

C89-Only Language Support

LCC is a C89 compiler, so C99 features like bool, for (int ...), or mid-block variable declarations cause compilation errors, limiting use with modern code.

Performance and Size Overhead

The use of lookup tables for arithmetic leads to large binary sizes and slow execution; the README notes symbol tables can be extremely large, requiring stripping with -s.

ABI and Library Compatibility Issues

Calls to external libraries can clobber registers, and function pointers to external functions are not implemented, requiring workarounds like internal wrapping, as admitted in the Limitations section.

Frequently Asked Questions

Quick Stats

Stars10,587
Forks442
Contributors0
Open Issues20
Last commit2 years ago
CreatedSince 2015

Tags

#turing-complete#educational#obfuscation#compiler-design#low-level#x86-assembly#proof-of-concept#reverse-engineering#c-compiler

Built With

s
shell
P
Python
C
C++

Included in

C/C++70.6k
Auto-fetched 1 hour ago

Related Projects

8cc8cc

A Small C Compiler

Stars6,429
Forks765
Last commit2 years ago
cc

Compile and execute C "scripts" in one go!

Stars2,182
Forks185
Last commit10 months ago
PCCPCC

Portable C Compiler sources

Stars138
Forks37
Last commit2 years ago
LLVMLLVM

Collection of modular and reusable compiler and toolchain technologies

Stars0
Forks0
Last commit
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub