Les problèmes de l'obfuscation de code

L'obfuscation de code est la solution la plus ancienne appliquée à la protection du code Java, et c'est aussi la solution la plus directe.

L'obfuscation de code implique généralement les quatre méthodes suivantes :

  1. Conversion des noms de packages, de classes et de variables
  2. Modification des structures de contrôle, comme l'aplatissement du flux de contrôle, l'ajout de prédicats immuables, etc.
  3. Obfuscation ou chiffrement des chaînes de caractères
  4. Ajout de code inutile

L'obfuscation de code peut réduire significativement la lisibilité du code décompilé et augmenter la difficulté de l'analyse statique, mais quelle que soit la méthode d'obfuscation utilisée, la logique d'exécution du programme ne sera pas modifiée.

Le bytecode JVM est un code intermédiaire avec une sémantique très claire et explicite, et hautement lisible. Pour les fichiers de classe obfusqués, même s'ils ne peuvent pas être restaurés en code source Java lisible, ils peuvent toujours être analysés au niveau du bytecode. En raison de la nature hautement sémantique du bytecode Java, ce processus est en réalité relativement facile.

Nous avons développé un moteur d'exécution de bytecode JVM en utilisant les langages Java et Kotlin. Les utilisateurs peuvent utiliser ce projet pour déboguer dynamiquement les programmes Java au niveau du bytecode dans IntelliJ IDEA. Pour plus d'informations, veuillez consulter l'article ci-dessous.

https://protector4j.com/fr/articles/jvm-bytecode-engine-written-with-java-and-kotlin/

Et nous utilisons ce moteur pour tenter de craquer un code obfusqué bien connu, le processus spécifique peut être consulté dans l'article suivant

http://protector4j.com/fr/articles/deobfuscate-with-vlx-vmengine/

Conclusion

D'après l'analyse ci-dessus, on peut constater qu'en raison de la haute sémantique du bytecode JVM, il est très facile à analyser et à lire. La logique d'exécution peut être facilement analysée grâce au débogage dynamique. L'écriture d'outils de débogage dynamique n'est pas une tâche très complexe, c'est pourquoi l'obfuscation n'est pas une solution de protection fiable.