uso titledborder poner layouts crear con borde java decompiling source-code-protection

poner - titledborder java



¿Cómo proteger las clases compiladas de Java? (5)

Lo sé, muchas preguntas similares se han hecho aquí. No pregunto si puedo proteger mi clase de Java compilada, porque obviamente dirás ''no, no puedes''. Estoy preguntando cuál es el método más conocido para proteger las clases de Java contra la descompilación. Si tiene conocimiento de algún trabajo académico o de investigación en este campo, hágamelo saber. Además, si ha utilizado algunos métodos o software, ¿puede compartir su experiencia? Cualquier tipo de información será muy útil. Gracias.


Entonces, ¿cómo puedes proteger tus clases para que no sean descompiladas? Una respuesta es Crema. Crema codifica la información simbólica en sus archivos .class para que sean menos vulnerables a la descompilación. La información simbólica que Crema codifica incluye el nombre de la clase, su superclase, interfaces, nombres de variables, métodos, etc. La máquina virtual de Java (JVM) necesita estos nombres simbólicos para vincular sus clases con paquetes de biblioteca. Crema mezcla estos nombres simbólicos y hace referencias a ellos de la misma manera para que la JVM aún pueda lograr el enlace correcto entre clases y paquetes.

Entonces, ¿cómo funciona Crema? Básicamente, antes de distribuir tus archivos de clase en Internet, ejecuta Crema en ellos. Crema codificará la información simbólica contenida en ellos, y colocará cada nueva clase en el archivo 1.crema. Entonces, su trabajo es cambiar el nombre de 1.crema a algo como filename.class antes de distribuirlo en Internet.

COMO PROYECTAR CLASES COMPLETADAS DE JAVA



Primero, si está apuntando "solo" al mercado de Windows, existe una manera muy fácil de evitar la descompilación ".class to .java": use una herramienta como Excelsior Jet que transformará el .jar en un archivo .exe .

Esto es infalible: es imposible recuperar el archivo .java si usa Excelsior Jet (por tanto, todas las personas que dicen "es imposible evitar la descompilación de un archivo .class "). Claro, un atacante podría iniciar SoftIce e intentar rastrear su archivo .exe, pero eso resultará un poco más complicado que usar JAD para descompilar la clase .cava en un archivo .java y ciertamente no permitirá volver a encontrar el archivo .java .

Ahora tal vez esté apuntando a OS X y Linux o no tiene $$$ para pagar por Excelsior Jet.

Estoy escribiendo un software comercial escrito en Java. Ese software solo tiene sentido si hay una conexión a Internet. Por lo tanto, "protegemos" nuestro software, entre otros, al hacer que parte de los cálculos se realicen en el lado del servidor: tenemos varios .class que no funcionarán a menos que se generen desde el lado del servidor y los enviamos por el cable ( y lo que se envía en el cable siempre es diferente: estamos generando archivos .class únicos y únicos en el lado del servidor).

Esto requiere una conexión a Internet, pero si al usuario no le gusta cómo funciona nuestro software, entonces es libre de comprar uno de los productos inferiores de nuestros competidores;)

La descompilación no servirá de mucho: necesita activamente descifrar el software (es decir, reproducir lo que está sucediendo en el lado del servidor) o no podrá usarlo.

Usamos nuestra propia "ofuscación de cuerdas" antes de usar Proguard. También hacemos instrumentación de código fuente (podríamos haber hecho también instrumentación de bytecode) donde eliminamos muchas cosas del código (como la "afirmación" que comentamos) e introducimos una "ofuscación de flujo de código aleatoria" [el software puede tomar diferentes caminos y al mismo tiempo obtienen el mismo resultado, esto es algo que realmente hace que el software sea difícil de rastrear]).

Luego utilizamos Proguard (que es gratuito) para aplanar toda nuestra jerarquía OO y para ofuscar el código ya codificado por flujo de código y ofuscado por cadenas.

Así que nuestro flujo es:

  • ofuscación de cuerdas
  • ofuscación de flujo de código aleatorio
  • Proguard
  • .jar final que depende de .class que se generan (de manera diferente) dinámicamente en el lado del servidor.

Además de eso, lanzamos actualizaciones muy regulares (y automatizadas) que siempre se aseguran de modificar un poco nuestro esquema de protección cliente / servidor (de modo que con cada lanzamiento un atacante hipotético debe comenzar principalmente desde cero).

Por supuesto, es más fácil tirar la toalla y pensar: "no hay nada que pueda hacer para que la vida de un atacante sea más difícil porque JAD puede volver a encontrar el archivo .java de todos modos" (lo cual es más que muy discutible y descaradamente incorrecto en el caso donde utiliza un convertidor de .class a .exe para proteger su .class de la descompilación).


Puedes probar el protector de Java . Es una forma mejor que la ofuscación. Hace un ClassLoader nativo modificando la fuente de OpenJDK, podría cifrar las clases que quiere proteger por AES y analizarlas en su costumbre. JRE. Puede publicar su software con el JRE y distribuirlo. su software de seguridad.