AppSCO (Source code obfuscation) transforms the code into a form that is functionally identical to the original code but is much more difficult to understand and reverse engineer using tools. AppSCO supports the application source code developed using Android JNI, iOS Xcode and C/C++ /Object C language.

Control Flow Flattening

Control flow flattening obscures the control flow logic of a program by “flattening” the control graph so that all basic blocks appears to have the same set of predecessors and successors and semantics of the program. Thus making any disassembled code more difficult to analyze the semantics or the making of any semantics to the program.

Inserts dummy code that is executed when the program is run but does not affect the semantics of the program making any disassembled code much more difficult to analyze.

mov si, si

mov esp, ebp

jni loc_abcd

xchg cdd es1

mov cl, cl

xchg scd, cdi

mov di, di

ji loc_dcba;

followed by·jmp to loc_abcd

cpuid

ret

In the example, the only”real”statement is the mov esp, ebp

Opaque Predicate Insertion

Opaque predicate insertion adds predicates with opaque conditions and alternate branches that look realistic to a script or person skimming the code. Realistic predicates significantly slow down a human analyst, and will also slow down tools that operate on program control flow graphs (CFGs) by ballooning the graph to be much larger than original.