🪢Dé-obfuscation

Description

L'obfuscation est un procédé utilisé par les développeurs d'applications afin de remplacer les différents éléments du code source de leurs applications (classes, call API, noms de variables...) en valeurs beaucoup moins explicite afin de rendre plus difficile la revue de code pour un potentiel individu malveillant. Ainsi, ils peuvent coder leurs applications de manière lisible pour eux puis obfusquer que le code avant de le rendre publique avec des outils tels que ProGuard dans le cas de code JAVA par exemple.

Le processus permettant de rendre de nouveau le code compréhensible est nommé Dé-obfuscation et demande une analyse fastidieuse du code et une grande compréhension de celui-ci.

Reconnaissance

L'outil APKiD peut permettre dans un premier temps de vérifier si le code a été obscurci ainsi que les éléments obscurcis.

apkid path/to/example.apk
[+] APKiD 2.1.2 :: from RedNaga :: rednaga.io
[*] paht/to/example.apk!classes.dex
 |-> anti_vm : Build.TAGS check, possible ro.secure check
 |-> compiler : r8
 |-> obfuscator : unreadable field names, unreadable method names

Méthode

Lors de l’analyse de code obscurci, l’annotation des noms de classe, des noms de méthodes et d’autres identifiants au fur et à mesure est une bonne pratique.

De plus, lorsque le fonctionnement d'une classe peut être devinée, les outils de décompilation de code tels que intelliJ ou JADX sont permettent de renommer des classes, variables etc permettant de rendre le code plus lisible.

Exemple:

Dernière mise à jour