2010-03-29 14 views
86

Estoy desarrollando un software de seguridad y quiero ofuscar mi código java por lo que será imposible realizar ingeniería inversa. ¿Cuál es el ofuscador de Java más confiable?¿El mejor ofuscador de Java?

+10

@Xinus "llegar a ser imposible realizar ingeniería inversa" - difícilmente, Lo mejor ha intentado y ha fallado – ant

+163

Tuve algunos colegas que crearon un código muy ofuscado. Pero esa no era su intención. –

+4

'Una vez se dijo que si tuvieras una infinidad de monos en typewiters y una cantidad de tiempo infinita, escribirían todas las grandes obras de Shakespeare. - Dilbert – ant

Respuesta

81

En primer lugar, realmente debe tener en cuenta que es nunca imposible de aplicar ingeniería inversa. Todo es pirateable Un desarrollador inteligente que use un IDE inteligente ya puede llegar lo suficientemente lejos.

Bueno, puedes encontrar here una lista. ProGuard es bastante bueno. Lo he usado yo mismo, pero solo para "minificar" el código Java.

+1

@BalusC: Entonces, ¿qué herramienta utilizas para ofuscar el código de Java? usted ofusca su código java, ¿no? – Thinhbk

+0

@Thinhbk La ofuscación hace que sea más difícil obtener rastros de pila útiles. –

+0

@ ThorbjørnRavnAndersen: De acuerdo. OMI, la ofuscación hará que los rastros de pila se vuelvan casi inútiles.En ese caso, estoy usando algún truco con el log msg, que puede ayudar. – Thinhbk

10

Creo que Proguard es el mejor. También es posible integrarlo con su IDE (por ejemplo, NetBeans). Sin embargo, considere que si usted ofusca su código, podría ser difícil hacer un seguimiento de los problemas en sus registros.

+6

+1 para "tenga en cuenta que si usted ofusca su código, podría ser difícil hacer un seguimiento de los problemas en sus registros". Justo cuando creía que la depuración era lo suficientemente difícil ... –

+7

Un buen ofuscador que cambie los nombres y la información del número de línea debería generar un registro para revertir el proceso. De esta forma, al menos las trazas de pila siguen siendo útiles para los binarios ofuscados. –

+3

ProGuard crea dichos archivos inversos para la depuración. :-) – Malax

4

Solía ​​trabajar con Klassmaster en mi empresa anterior y funciona muy bien y puede integrarse bastante bien con los sistemas de compilación (maven el apoyo es excelente). Pero no es gratis sin embargo.

20

Si una computadora puede ejecutarlo, un humano motivado adecuadamente puede realizar una ingeniería inversa.

+0

¿Cuántas personas pueden leer el código ofuscado y comprender la lógica? Tengo muchos amigos ingenieros y no pueden hacer eso. Solo John Nash puede hacer esto;) – kodmanyagha

+2

@kodmanyagha Si estuvieran lo suficientemente motivados, lo aprenderían. No es dificil. –

4

Hemos tenido mucha mejor suerte cifrando los frascos en lugar de ofuscarlos. Usamos Classguard.

+6

Si no ha leído "descifrado del cifrado de código de bytes de Java" (http://www.javaworld.com/javaworld/javaqa/2003-05/01-qa-0509-jcrypt.html) de Vladimir Roubtsov, puede desear para hacer eso ahora –

25

Compruebe hacia fuera mi artículo Protect Your Java Code - Through Obfuscators And Beyond para una discusión de la ofuscación contra otros tres maneras de hacer la ingeniería inversa de sus aplicaciones más caras, y una colección de enlaces a herramientas y otros materiales de lectura.

+1

Esto es lo que realmente necesito. Quiero escribir PHP ofuscador para mis proyectos. La lógica es la misma en todos lados. Gracias ... – kodmanyagha

+1

Artículo fresco y extenso sobre la ofuscación de Java y la recopilación de software. – erm3nda

4

Es cierto que siempre es posible realizar ingeniería inversa de algún código, al igual que es imposible proteger una casa en orden para que nadie pueda robarla. Eso no me impide bloquear la puerta, sin embargo. En realidad, no estoy en el mundo de Java, uso BitHelmet para .net.

+6

+1 para regresar a la red 0. Esta respuesta no es inútil. – HaloWebMaster

4

no sé a ciencia cierta si la solución es segura, sino de la solución ClassGuard, es interesante para leer el artículo y el comentario en: http://www.javaworld.com/community/?q=node/1604#comment-12296

+0

Y otra alternativa que también usa código nativo en lugar de defineClass es [JarCrypt] (http://www.componio.com/products/jinstaller/jarcryp/) – Renato

+0

Un artículo que enseña cómo crackear [ClassGuard] (http: // zenofx .com/classguard /): http://setrst.blogspot.com/2010/04/classguard-unguarded.html. Simplemente no sé si esto todavía funciona en la última versión. – Renato

Cuestiones relacionadas