Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Pablo Videla en 31 Julio 2009, 23:24 pm



Título: cifrar ejecutable .jar????
Publicado por: Pablo Videla en 31 Julio 2009, 23:24 pm
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  :-\


Título: Re: cifrar ejecutable .jar????
Publicado por: kinos en 1 Agosto 2009, 02:07 am
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


Título: Re: cifrar ejecutable .jar????
Publicado por: Pablo Videla en 1 Agosto 2009, 02:29 am
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


Título: Re: cifrar ejecutable .jar????
Publicado por: egyware en 14 Agosto 2009, 17:07 pm
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


Título: Re: cifrar ejecutable .jar????
Publicado por: Pablo Videla en 14 Agosto 2009, 18:53 pm
Gracias por responder , ahora mismo buscare el programa  ;)


Título: Re: cifrar ejecutable .jar????
Publicado por: 1mpuls0 en 14 Agosto 2009, 22:09 pm
Protecting Java Code Via Code Obfuscation

http://www.cs.arizona.edu/~collberg/Research/Students/DouglasLow/obfuscation.html


Título: Re: cifrar ejecutable .jar????
Publicado por: 1mpuls0 en 14 Agosto 2009, 22:21 pm
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:)

Código:
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: