cifrar ejecutable .jar????

Iniciado por Pablo Videla, 31 Julio 2009, 23:24 PM

0 Miembros y 1 Visitante están viendo este tema.

Pablo Videla

Hola a todos , esa es mi duda , se puede cifrar el ejecutable hecho en java , un .jar? , esto es para que no me puedan leer mi codigo descompilando o algo parecido ,  y otra cosa , como puedo hacer para cifrar los string de conexion que conecta a  una base de datos?

cosa para que no puedan leer de ninguna forma mi programa , ni sniffeandolo  :-\

kinos

Hay que hacer varias cosas. Todavía no he probado el tema que comentas pero tengo un librito mágico por aki. "Hackers de JAVA y J2EE".
Pone muchas cosillas.

1. Apagar la información de depuración al compilar: (para dar menos facilidades a la ingenieria inversa)

   -compilar asi--> javac -g:none Test.java

2. Ofuscación:

   -Consigue un ofuscador pa poner feo el codigo... to mu negro...

3. Modificar, codificar o cifrar los archivos de clase:

   -Escribir una herramienta para cifrar, codificar o modificar un archivo de clase normal de forma que sea incomprensible para cualquier JVM o descompilador.
   -Extender la clase URLClassLoader y sobreescribir el método findClass de forma que encuentre y descifre la clase que se cifró en el primer paso.
   -Escribir un programa de prueba que cargue una clase en particular con el cargador de clases propio.

4. Los peligros de las cadenas empotradas:

   -Ojo con lo que guardas en los strings (si esta el programa ejecutandose, digamos que puedes ver lo que hay en la ram, en los archivos de clase o algo asi... una clave de accesoo..)

Y nose que más... esque si encriptases el jar supongo que no se podría ejecutar. Así que habría que hacer alguna cosa de estas.

Suerte

Pablo Videla

y si quiero compilar un proyecto de netbeans , no puedo compilar clase por clase que son como 50  :xD, y sobre la ofuscacion buscare sobre el tema , gracias por la orientacion , si tienes mas info te lo agradeceria

egyware

Yo antes tenia la misma duda, existe un programa en Java que ofusca se llama ProGuard. Buscalo es facil de usar y muy dificill de descompilar he incluso te achica el Jar

Pablo Videla

Gracias por responder , ahora mismo buscare el programa  ;)

1mpuls0

#5
abc

1mpuls0

#6
Aqui encontraran una amplia variedad de Decompiladores y Ofuscadores

http://www.plentyofcode.com/2007/08/java-decompilers-and-obfuscators.html

Yo utilizo proguard, aunque no lo se usar muy bien, trae muchas opciones, pero lo uso para cuando le voy a pasar algun programa (que vean como funciona) a mis cuates, para que no se roben mi código  :laugh: pero me imagino que ya hay programas para arreglar eso xD, es cuestion de investigar.

Asi te deja el codigo (repito no lo he usado a su maximo, asi que me imagino que usando otras opciones lo ha de dejar mas "oscuro" o feo  :rolleyes:)

private boolean b()
   {
       Object obj;
       ab ab1;
       if(b_javax_swing_JTextField_fld.getText().equals(""))
           break MISSING_BLOCK_LABEL_198;
       obj = new i(b_javax_swing_JTextField_fld.getText());
       obj = new D(((i) (obj)));
       ab1 = new ab();
       double d1;
       d1 = ab1.a(((D) (obj)).a());
       h_java_lang_String_fld = (new StringBuilder()).append("Exp Arit = ").append(String.valueOf(d1)).toString();
       new StringBuilder();
       this;
       JVM INSTR dup_x1 ;
       g_java_lang_String_fld;
       append();
       a_char_fld;
       append();
       b_javax_swing_JTextField_fld.getText();
       append();
       " = ";
       append();
       String.valueOf(d1);
       append();
       "\n";
       append();
       toString();
       g_java_lang_String_fld;
       b_javax_swing_JTextArea_fld.setText(g_java_lang_String_fld);
       g_boolean_fld = true;
       break MISSING_BLOCK_LABEL_238;
       JVM INSTR pop ;
       a_h_fld.a("Error");
       JOptionPane.showMessageDialog(this, "No se puede Evaluar", "Error", 0, new ImageIcon(getClass().getResource("/images/Error.png")));
       break MISSING_BLOCK_LABEL_238;
       a_h_fld.a("Error");
       JOptionPane.showMessageDialog(this, "Cadena vacia", "Error", 0, new ImageIcon(getClass().getResource("/images/Error.png")));
       g_boolean_fld = false;
       return g_boolean_fld;
   }



Saludos

PD. Volviendo al tema, ¿Se puede cifrar un jar para evitar que lean tu código??  :huh:
abc