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 :
- acob source code
- windows binaries
- sample inputs and outputs , discussion of used algorithm
- it outputs code using prettyprinter (till now, i faced no problems with my samples. but many people in list say it’s problematic)
- 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
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