Problemas con la compilación AOT

La compilación AOT traduce el código Java a código nativo, mejorando significativamente la velocidad de ejecución de los programas Java. Indirectamente logra el objetivo de proteger el código Java al convertirlo en código máquina.

Para programas Java, especialmente aquellos basados en varios frameworks, la compilación AOT es un gran desafío debido a la inclusión de muchas características dinámicas. Al mismo tiempo, para comprometerse con el dinamismo, el archivo binario compilado puede contener aún una gran cantidad de información de archivos class. El siguiente artículo presenta un proyecto que escanea archivos binarios compilados para obtener información de clases. https://protector4j.com/es/articles/extract-java-classes-information-from-aot/

Incluso si el programa binario no contiene información de archivos class, su lógica de ejecución aún existe de la misma manera. La única diferencia es que la representación ha cambiado de bytecode a código máquina, sin ninguna protección especial. Si alguien puede entender su mecanismo de compilación y ejecución, aún es posible realizar ingeniería inversa para obtener código legible. El siguiente artículo presenta un proyecto de este tipo. https://protector4j.com/es/articles/graalvm-nativeimage-reverse-engineering/

Conclusión

La configuración de compilación AOT es difícil, la dificultad de compilación es alta y la probabilidad de fallo de compilación es alta. Incluso si la compilación es exitosa, la lógica del código solo cambia de representación en bytecode a representación en código máquina. Su lógica operacional inherente aún existe sin ninguna protección especial. Si alguien puede entender su propio mecanismo de compilación y ejecución, aún es posible realizar ingeniería inversa para obtener código legible.