As the Skaters output, the transformed fragments are re-assembled and obfuscated with the designated obfuscation criteria.
Given the original source codes and desired obfuscation criteria, the proposed Control Flow obfuscation works by decomposing the source codes into fragments and then applying various transforms to the code fragments. Control Flow obfuscation discourages reverse engineering and malicious tampering of software codes by applying false conditional statements and other misleading constructs in order to confuse and break decompilers. Moreover, since only Control Flows are obfuscated with a sequence of transformations that produce equivalent results of the original fragments, the final output can still preserve the same execution results as the original codes.
Another technique is a technique called the bogus function calling graph. If the control flow is not understood, it is difficult to determine the true content of the message.In this case, the obfuscated version is influenced by the dynamic analysis, which causes the obfuscated calling relationship to change. Because of this, the original version is difficult to interpret with the human eye. However, this method is easily susceptible to dynamic analysis of the program. This change is very effective because it enables reverse analyzers to face more abstract functional units. Moreover, it improves the resistance of the software against similarity analysis techniques.
It is important to remember that obfuscation algorithms affect the program's semantics as well as the calling relationship. This method changes the called function before running the target program. Another technique is the COOPS (Control Flow Oriented Obfuscation Scheme), which changes the control flow structure of the program. Also, the control flow is critical to determining the intent of the program. COOPS starts from the semantics of the program and transforms it into an interfunction call flow graph.