Necesito distribuir una aplicación de escritorio Java para el usuario. Estoy buscando diferentes maneras de proteger mi código fuente de la ingeniería inversa.
Un método es distribuir una Máquina Virtual (dice Linux) que contiene la aplicación que se ejecuta dentro de esa VM, y hacer que el usuario root tenga una contraseña, por ejemplo. 50 caracteres El inconveniente es que el tamaño de descarga de mi aplicación es demasiado grande (algunas Gigas). Y la siguiente pregunta es: ¿puede un atacante leer mi código Java desde una imagen de disco VDI?
Otro método es Ahead of Time (AOT) compilando a Native. ExcelsiorJet parece ser la mejor herramienta para eso, sin embargo eso no es gratis. Ofuscar el código fuente NO es suficiente, ya que los que desean leer su código fuente son los que principalmente quieren preocuparse por el flujo de información y la estructura de datos. Este excelente artículo explica más sobre AOT y ofuscación. Ahora la pregunta es: al utilizar ExcelsiorJet para compilar en nativo, ¿está mi código nativo relativamente a salvo de la ingeniería inversa?
Otra forma más: por ejemplo, use C ++ para escribir el código más crítico para la seguridad, compilarlo en nativo real y exponer mi fuente Java sin importancia. Pero esto significa que también necesitaré mantener ambas partes.