Table 10. Studies conducted to overcome obfuscation.
To overcome obfuscation, many studies were conducted on different approaches.
| References | Year | Solution for the obfuscation |
|---|---|---|
| DNADroid (Crussell, Gibler & Chen, 2012) | 2012 | Using programme dependence graphs (PDGs), DNADroid can prevent typical program transformations in obfuscation. |
| Apvrille & Strazzere (2012) | 2012 | Detects encryption attempts as one of the obfuscation methods |
| DroidAPIMiner (Aafer, Du & Yin, 2013) | 2013 | Includes features, which are regularly used for obfuscation, such as substring (), indexOf(), getBytes(), valueOf(), replaceAll(), Append(), getInstance(), doFinal(), and Crypto.spec.DESKeySpec |
| Androsimilar (Faruki et al., 2013) | 2013 | Adopts statistically strong file features based on a normalised entropy |
| Droidanalytics (Zheng, Sun & Lui, 2013) | 2013 | Only extracts the API calls in methods and classes, which will be executed in the run time. Additionally, the generated signature, which is based on the analyst-defined API, which have the ability to update flexibly. |
| Apposcopy (Feng et al., 2014) | 2014 | Includes the predicate inter-component communication (ICC), which allows the writing of signatures, which are resilient to high-level control flow obfuscation. |
| Drebin (Arp et al., 2014) | 2014 | DREBIN extracts API calls related to obfuscation and loading of code, such as DexClassLoader.loadClass() and Cipher.getInstance |
| Dendroid (Suarez-Tangil et al., 2014) | 2014 | Concentrates on the internal structure of code units (methods) to resist obfuscation. |
| Droidlegacy (Deshotels, Notani & Lakhotia, 2014b) | 2014 | Graph node represents the Java class, which detects light obfuscation. |
| Firdaus (2017) | 2017 | Uses Jadx (a reverse engineering tool), which provides the de-obfuscation option. It is capable of de-obfuscating the obfuscation code in minimal error. |