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 :-\
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
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
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
Gracias por responder , ahora mismo buscare el programa ;)
Protecting Java Code Via Code Obfuscation
http://www.cs.arizona.edu/~collberg/Research/Students/DouglasLow/obfuscation.html
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: