Les problèmes des solutions de protection par virtualisation
L'obfuscation peut augmenter la difficulté de l'analyse statique, mais ne peut pas empêcher efficacement l'analyse dynamique. L'objectif de la virtualisation du code est d'augmenter la difficulté de l'analyse dynamique.
La virtualisation du code Java est réalisée en construisant des moteurs de virtualisation personnalisés, permettant aux bytecodes qui pourraient être exécutés directement d'être exécutés via ces moteurs de virtualisation. Comme il s'agit d'un moteur de virtualisation personnalisé, le monde extérieur ne peut pas accéder directement à sa méthode d'exécution, son format d'instructions et autres informations. De plus, cela entraîne une expansion significative du code, rendant difficile la rétro-ingénierie du code contenant ses informations sémantiques originales.
L'impact de la virtualisation sur les performances
La protection par virtualisation est une solution de protection de code extrêmement forte, mais le plus grand problème de la protection par virtualisation est la performance. Les moteurs de virtualisation personnalisés peuvent difficilement adopter les nombreuses mesures d'optimisation des performances comme la JVM et ne peuvent pas appliquer les techniques d'optimisation des performances telles que le JIT. Vous pouvez essayer d'utiliser le moteur JVM que nous avons mentionné précédemment pour exécuter le même code qu'une JVM ordinaire et comparer les performances, ce qui peut entraîner une différence de performance de plus de 100 fois.
Conclusion
La protection par virtualisation est la méthode de protection de code la plus sécurisée, mais en raison de son impact significatif sur les performances, elle ne peut pas être appliquée à l'ensemble du code d'un programme. Elle ne peut protéger que le code critique, tandis que le reste du code reste exposé au risque. En ciblant les autres parties du code, on peut obtenir les informations fonctionnelles de la portion virtualisée du code.