2012-03-09 38 views
9

Estoy desarrollando una aplicación usando Java pero no voy a lanzar el código. El problema es que probé uno de estos compiladores de compilación de jar y pude obtener el código de mi archivo jar casi a la perfección. Mi pregunta es ¿cómo puedo distribuir mi archivo jar sin que se extraiga mi código?Cómo proteger un archivo Jar de la descompilación?

+0

Descubrí que el duplicado sugerido realmente responde mi pregunta. Gracias por las instrucciones. – Pouya

Respuesta

8

Como Java conserva la mayoría de los "metadatos" durante la compilación (lo que permite la carga dinámica y la reflexión), es sencillo descompilar (no solo desmontar) los archivos de clase compilados. Es por eso que el código recuperado es muy similar al original.

Aunque no es perfecto, su única opción es utilizar un ofuscador, como ProGuard.

6

No puede. Como mínimo, la JVM necesitará sacar el código para poder ejecutarlo. Y si la JVM puede sacar el código, cualquiera puede.

Lo mejor que puedes hacer es ofuscar el código, pero recomendaría que no lo haga porque hará que rastrear los errores de producción sea muy difícil porque los rastreos de la pila serán difíciles de seguir.

+1

Entiendo que las (buenas) herramientas de ofuscación proporcionan una tabla que puede usar para traducir la salida de pila del ejecutable a las clases y líneas de código originales. Pero en general son más efectivos para comprimir el código, que protegerlo. –

2

No hay posibilidad de proteger el código del desmontaje. Puede usar una herramienta de ofuscación como 'proguard'. Incluso después de la descompilación, será casi imposible comprender el código.

1

Ofusca tu código usando algún ofuscador del mercado. Los ofuscadores cambian los nombres de tu clase y sus métodos a algunos nombres de aspecto extraño, por lo que es difícil para las personas entender el código. Tenga en cuenta que las personas aún podrían descompilar su código, pero lo único que les resultaría difícil es comprenderlo debido a los nombres confusos.

La desventaja de esto es que sería difícil para usted depurar y admitir el código ofuscado en caso de que su cliente se enfrenta a algunos problemas ya que los rastreos de pila en las excepciones tendrían los nombres de clase y método desordenados.

1

nunca es imposible realizar ingeniería inversa en java pero creo que Proguard es el mejor. También es posible integrarlo con su IDE (por ejemplo, NetBeans). y ygard para horm

Cuestiones relacionadas