Problèmes liés aux solutions de protection de la virtualisation
L'obfuscation peut complexifier l'analyse statique, mais ne peut empêcher efficacement l'analyse dynamique. La virtualisation du code vise précisément à accroître la difficulté de l'analyse dynamique.
La virtualisation du code Java est réalisée grâce à la création de moteurs de virtualisation personnalisés, permettant ainsi l'exécution de bytecodes exécutables directement via ces moteurs. Du fait de sa nature personnalisée, le monde extérieur ne peut accéder directement à sa méthode d'exécution, à son format d'instructions ni à aucune autre information la concernant. De plus, elle entraîne une augmentation significative de la taille du code, rendant difficile sa rétro-ingénierie et la récupération de ses informations sémantiques originales.
L'impact de la virtualisation sur les performances.
La protection contre la virtualisation est une solution de protection du code extrêmement efficace, mais son principal problème réside dans… performanceLes moteurs de virtualisation personnalisés peinent à adopter de nombreuses mesures d'optimisation des performances, contrairement à la JVM, et ne peuvent pas appliquer de techniques d'optimisation telles que le JIT. Vous pouvez essayer d'utiliser… moteur JVM Nous avons mentionné précédemment l'exécution du même code qu'une JVM classique et la comparaison des performances, ce qui peut entraîner une différence de performances de plus de 100 fois.
Conclusion
La protection par virtualisation est la méthode de protection du code la plus sûre, mais en raison de son impact significatif sur les performances, elle ne peut être appliquée à l'intégralité du code d'un programme. Elle ne protège que le code critique, tandis que le reste du code demeure exposé aux risques. En ciblant d'autres parties du code, il est possible d'obtenir des informations fonctionnelles sur la portion virtualisée.