Cómo funciona Protector4J
Protector4J protege su código fuente de Java al convertir archivos jar en archivos jarx privados cifrados. Adoptamos múltiples enfoques para garantizar la seguridad de su aplicación tanto desde el nivel JVM como binario, brindando protección de aplicaciones de alta resistencia.
Los problemas con la ofuscación de código
Debido a la alta semántica del código de bytes JVM, es extremadamente fácil de analizar y leer. Es fácil analizar su lógica de ejecución mediante la depuración dinámica. Escribir una herramienta de depuración dinámica no es una tarea muy complicada. Por tanto, la ofuscación no es una solución de protección fiable.
Los problemas con la encriptación de clases
Debido a la existencia del mecanismo de adjunto JVM, todo el llamado código cifrado que no se ha separado del funcionamiento normal de JVM se puede leer fácilmente utilizando herramientas de adjunto. Por tanto, esta es la solución de protección más ineficaz.
Los problemas con la protección de VM
La protección de 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 se puede aplicar a todo el código de un programa. Solo puede proteger código crítico, mientras que otros códigos aún conllevan el riesgo de exposición. Al apuntar a otras partes del código, se puede obtener información funcional sobre la parte virtualizada del código.
Los problemas con la compilación AOT
La compilación AOT es difícil de configurar y compilar y tiene una alta probabilidad de fallar. Incluso si la compilación es exitosa, la lógica del código solo cambia de representación de código de bytes a representación de código de máquina. Su lógica operativa inherente todavía existe sin ninguna protección especial. Si uno puede comprender su propio mecanismo de compilación y ejecución, aún es posible realizar ingeniería inversa en código legible.
Desofuscación con vlx-vmengine
Desofuscar código Java con el motor de ejecución de bytecode JVM vlx-vmengine
Motor de ejecución de bytecode JVM escrito en Java/Kotlin
La depuración dinámica tradicional de Java solo se puede realizar en función del código fuente, y sin código fuente o archivos de clase Java ofuscados, la depuración dinámica es imposible. La ejecución de programas Java se basa en la JVM, y la JVM utiliza el código de bytes como base para la ejecución. Usamos Kotlin para construir un motor de ejecución de código de bytes JVM, que se puede usar con IDE modernos, como IDEA, para depurar programas Java a nivel de código de bytes para observar el comportamiento de ejecución del programa.
Ingeniería inversa de GraalVM NativeImage
Para los programas Java que han entrado en la era de la compilación binaria, ¿se puede compilar fácilmente su código de forma inversa como en la era del código de bytes? ¿Cuáles son las características de los archivos binarios compilados por NativeImage? ¿Es suficiente la potencia de la compilación binaria para proteger código importante? Para explorar los problemas anteriores, recientemente escribí una herramienta de análisis NativeImage que ha alcanzado un cierto nivel de derivación inversa.
Hackear una aplicación Java encriptada con jhsdb (HotSpot Debugger)
Una solución para la protección del código Java es cifrar los archivos de clase. Estas soluciones cargan archivos jar o de clases cifrados a través de un cargador de clases personalizado. Debido a la existencia del mecanismo de conexión de JVM, este método no es efectivo y se puede descifrar fácilmente con las herramientas incluidas en el JDK.
Extrayendo información de la clase Java de binarios compilados AOT
AOT también se considera una solución para la protección del código Java, pero desafortunadamente, muchos programas Java ahora no se pueden separar del marco. Debido a la complejidad del marco, incluso los programas compilados por AOT deben incluir información de clase en el archivo binario final generado, y los archivos de clase en realidad están organizados ordenadamente en el área de recursos del archivo binario.
¿Qué es el archivo JARX?
El archivo JARX es nuestro formato de archivo patentado, que utiliza el mismo algoritmo de compresión Deflate que el algoritmo de cifrado Zip y AES para cifrar los datos.
La mejor solución de protección de código Java más allá de la ofuscación
Cifrar su código protege su propiedad intelectual y mejora enormemente la seguridad de sus aplicaciones. Hace que el robo de propiedad intelectual, la manipulación de códigos y el descubrimiento de vulnerabilidades de seguridad sean tan complicados y costosos que un fisgón casual armado con un descompilador de Java gratuito no será suficiente.
Alternativa de Excelsior JET
Protector4J es más que solo un reemplazo de Excelsior JET