Descifrando aplicaciones Java encriptadas usando jhsdb (depurador de hotspot)
Una solución para la protección del código Java es el cifrado de archivos de clase o el cifrado de archivos jar. Este tipo de solución carga el archivo de clase cifrado o el archivo jar a través de un cargador autodefinido, lo cual es inútil debido a la existencia del mecanismo Adjuntar de la JVM y se puede descifrar fácilmente con las herramientas que vienen con el JDK.
Aplicación de muestra
A continuación se muestra una aplicación de ejemplo con una ventana abatible simple y un botón. https://github.com/3-keys/test-swing-app
Aplicación de cifrado
Exporte un archivo jar ejecutable con Eclipse y utilice una herramienta de cifrado para cifrar el archivo jar. Después del cifrado, la estructura del archivo jar es la siguiente:
test-swing-app.jar son los datos del archivo jar cifrado, las clases del Lanzador son las clases de carga personalizadas de esta herramienta y el paquete jar cifrado aún se ejecuta mediante el comando java -jar estándar
Descifrar la aplicación encriptada
Primero, ejecute el archivo jar cifrado, luego busque el directorio bin de JDK y debería poder encontrar un archivo jshdb.
Ejecute jhsdb hsdb, abra HotSpot Debugger, si está en Windows, es posible que necesite ejecutarlo como administrador, haga clic en Archivo para seleccionar Adjuntar al proceso HotSpot...
Utilice el ps aux | grep java en el sistema Linux y busque el proceso pid a través del Administrador de tareas en el sistema Windows. Ingrese el pid del proceso en el cuadro de diálogo a continuación.
Después de adjuntarlo correctamente, haga clic en Herramientas->Navegador de clases
El navegador de clases contiene información sobre todas las clases cargadas, busque com.example y podrá ver todas las clases en com.example
Haga clic en com.example.TestWindow @0x0000…. y luego haga clic en "Crear archivo .class"
vaya al directorio donde se ejecutó el comando jhsdb antes, podrá ver el archivo de clase generado
UsarLuyten Ojadxpara abrir el archivo de clase y puedes ver el código descompilado