Abstract:
The aim of the thesis is to understand how the various obfuscation techniques among those provided by the Tigress software increase the complexity of the code and therefore are therefore to be preferred to avoid reverse engineering attacks.
Preliminarily, an analysis is carried out to identify among the numerous obfuscation transformations provided by Tigress, the most significant for the set objective, as using a "brute force" technique it would in fact be possible to test them all, so we proceeded with those that they would have modified the flow control chart more heavily.
To achieve this goal, the complexity of the source code obtained after the application of such obfuscations is used in some case studies considered significant (sorting, cryptographic and machine learning algorithm).
To measure the complexity of the code, cyclomatic complexity (McCabe, 1976) and Halstead complexity (1977) were used.
Once these results have been obtained, a statistical analysis is carried out in order to identify the maximum value for each metric considered, and then a process of normalization of the values is applied.
Subsequently a derived and relative metric is provided, which will be called "total complexity" in order to understand within a specific case study the goodness or otherwise of a certain obfuscation compared to the best possible result achieved by applying all possible obfuscations.