Problèmes avec les solutions de protection de la virtualisation

L'obscurcissement peut accroître la difficulté de l'analyse statique, mais ne peut pas empêcher efficacement l'analyse dynamique. Le but de la virtualisation du code est d'augmenter la difficulté de l'analyse dynamique.

La virtualisation du code Java est réalisée en créant 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. Puisqu'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, au format des instructions et à d'autres informations. De plus, cela entraîne une expansion significative du code, ce qui rend difficile la rétro-ingénierie du code contenant ses informations sémantiques d'origine.

L'impact de la virtualisation sur les performances.

La protection de la virtualisation est une solution de protection de code extrêmement solide, mais le plus gros problème avec la protection de la virtualisation estperformance. Les moteurs de virtualisation personnalisés sont difficiles à adopter de nombreuses mesures d'optimisation des performances telles que JVM et ne peuvent pas appliquer de techniques d'optimisation des performances telles que JIT. Vous pouvez essayer d'utiliser lemoteur JVM nous avons mentionné précédemment qu'il fallait exécuter le même code qu'une JVM classique et comparer les performances, ce qui peut entraîner une différence de performances de plus de 100 fois.

Conclusion

La protection contre la virtualisation est la méthode de protection du code la plus sécurisée, mais en raison de son impact significatif sur les performances, elle ne peut pas être appliquée à tout le code d'un programme. Il ne peut protéger que le code critique, tandis que les autres codes comportent toujours un risque d'exposition. En ciblant d'autres parties du code, on peut obtenir des informations fonctionnelles sur la partie virtualisée du code.