Problemas con las soluciones de protección por virtualización

La ofuscación puede mejorar la dificultad del análisis estático, pero no puede prevenir efectivamente el análisis dinámico. El propósito de la virtualización de código es aumentar la dificultad del análisis dinámico.

La virtualización de código Java se logra construyendo motores de virtualización personalizados, permitiendo que los bytecodes que podrían ejecutarse directamente se ejecuten a través de estos motores de virtualización. Dado que es un motor de virtualización personalizado, el mundo exterior no puede acceder directamente a su método de ejecución, formato de instrucciones y otra información. Además, resulta en una expansión significativa del código, lo que dificulta la ingeniería inversa del código que contiene su información semántica original.

El impacto de la virtualización en el rendimiento.

La protección por virtualización es una solución de protección de código extremadamente fuerte, pero el mayor problema con la protección por virtualización es el rendimiento. Los motores de virtualización personalizados difícilmente pueden adoptar numerosas medidas de optimización de rendimiento como el JVM y no pueden aplicar técnicas de optimización de rendimiento como JIT. Puede intentar usar el motor JVM que mencionamos anteriormente para ejecutar el mismo código que un JVM regular y comparar el rendimiento, lo que puede resultar en una diferencia de rendimiento de más de 100 veces.

Conclusión

La protección por virtualización es el método de protección de código más seguro, pero debido a su impacto significativo en el rendimiento, no puede aplicarse a todo el código de un programa. Solo puede proteger código crítico, mientras que otro código aún conlleva el riesgo de exposición. Al analizar otras partes del código, se puede obtener información funcional sobre la porción virtualizada del código.