aCob : Clang based code obfuscator for C

Hello,

aCob - Another C Obfuscator, is an obfuscator for C code based on clang, currently it only supports control flow flattening of input code. based on modified algorithm of one suggested here : http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.128.6241&rep=rep1&type=pdf
it’s based on Clang

aCob is hosted here : https://sourceforge.net/projects/acob/files/
the link gives :

  1. acob source code
  2. windows binaries
  3. sample inputs and outputs , discussion of used algorithm

known problems:

  1. it outputs code using prettyprinter (till now, i faced no problems with my samples. but many people in list say it’s problematic)
  2. due to the way it uses prettyprint (statement by statement), it will give output that gives compilation errors, for certain ways of declaring structs/enums in C

hope to hear suggestions / comments from you

Thanks,

Mohamed Yousef

any thoughts ?

Well since no one else replied, and I think it is due to this question
I am about to ask, why would you want to obfuscate C code? It is hard
enough to read as it is, want to make it more readable, not less
readable, so what is the purpose? And do not give me a reason about
needing to make code harder to read, just distribute a library then,
not code, or change your license.

Gimpel software ships FlexeLint for C/C++ as obfuscated code so you
can recompile it on your host without (easily) reverse engineer it.

Sometimes shipping a library is not practical if your customers are
using all kind of weird platforms, ABIs and compilers. That's why
almost all C++ libs ship with the source.

i would like to add that in this package the focus is more on binary obfuscation rather than source-only obfuscation
i.e. if you ship some software that contains some algorithm that you want to hide from a reverse-engineer
the basic idea is to make it hard to analyze the code and reconstruct the algorithm even if it passes through a compiler and regardless of optimizations it may apply