C/C++ Obfuscators


Software reverse engineering is the art of revealing the way a software works. In addition to the knowledge of how things really work, reverse engineering requires a lot of patience. It is illegal and immoral to reverse engineer software for commercial purposes, but it is legal to reverse engineer for educational purposes.


The only way to prevent reverse engineering is code obfuscation. This is a technique for protecting programs from being reverse engineered. The general idea is making the program look much more complicated than it really is by changing its structure, complicating the way data is represented, etc. There are several commercial obfuscators for Java and .Net languages, in which decompilation is easy when the program is not protected.


Obfuscated code is extremely difficult to understand for a human since the name of variables and subroutines and other symbols are totally meaningless and hard to remember and track.


A C/C++ obfuscator is a program which manipulates C or C++ sourcefiles in a way that they aren't readable by human beings, but they remain compilable. Obfuscators only obfuscate the text source code files, in fact, after formatting and compiling, the compiled binary file is the same as the binary file that compiled from original source code.


The most reliable way to build an obfuscator is to parse the source programming language according to the programming language lexical and syntax rules, based on a syntax parse engine. The parse engines will analyze the original source code with language syntax rules, decompose all source code lines to individual code elements, and restructure them into an equivalent source code that is more difficult to read and understand.


Obfuscators. features:

  • Replaces all symbol names possible with non-meaningfull ones, while preserving syntaxical and semantical correctness of the source code. Predefined symbols and symbols from the third-party libraries the C/C++ source code uses are left the same so the obfuscated code will still work without requiring to obfuscate those third-party C/C++ libraries or components;

  • Substitutes numeric values with the arithmetic expressions using (random or constant for the same numeric value) decimal and hexadecimal numeric values that evaluate to the same value;

  • Strips comments or reformats comments;

  • Removes indentation and whitespaces;

  • Re-wraps all code blocks;

  • Jams as much code on each line as possible;

  • Identifier scrambling has no impact on functionality or execution performance;

  • No changes to the C compilation or execution procedures or environment are made;

  • Predefined list of reserved names for standard C libraries are provided;

  • Can preserve most preprocessor conditionals and macro calls in the obfuscated source;

  • The source code can be neatly formatted to aid development before obfuscation;

  • The output is encoded in ASCII, European ASCII, or UNICODE;

  • Supports projects with files that arbitrarily heavy use preprocessor directives and macros, spanning several directories, mixing C and C++ languages that use any dialect of C/C++;

  • Keeps library source files code uses in non-obfuscated (original) form;

  • Makes analysis of changes between different releases of the obfuscated product more difficult;

  • Names of macros and their definitions also become obfuscated;

  • Source compression mode is supported. There are exception tables for common C and C++ libraries: ANSI C standard library, ISO C standard library, ISO C++ standard library (with and without STL symbols), POSIX standard v.2, UNIX95 standard, XPG3 standard, XPG4 standard, X Window System release 5, Motif user interface toolkit;

  • Includes several configurable obfuscation engines for symbol names, strings and integers;

  • Random generate and insert junk code / junk instruction to source code file;

  • Supports multiple case-sensitive and case-insensitive exception tables, user-specified symbol mapping.


An advanced tool for obfuscation is making C and C++ source code difficult to understand and adapt. It's useful for cases when source code of some project needs to be shipped without fear of intellectual property theft or illegal code reuse.


It converts the C and C++ source code into highly mangled and obfuscated form, making it extremely difficult to study, analyse, reuse and re-work for competitors or customers, while fully retaining functionality of the original blocks of source code.


Obfuscation Tools: