2009-09-03 23 views
5

Vamos a ofuscar nuestro proyecto pero no queremos perder la capacidad de depuración remota y hotswapping.Depuración código ofuscado java

¿Es posible? ¿Qué herramientas pueden manejar esto? Estaría contento con la ofuscación simple, simplemente cambiar el nombre de clases/métodos/variables.

[Editado] Estamos utilizando Intellij IDEA pero no hemos podido encontrar ningún complemento para esta tarea.

Respuesta

5

Tenemos el mismo tipo de necesidades (ofuscación simple, necesitamos depurarlo más tarde) y usamos ProGuard. Es una aplicación de Java, que se puede integrar en una tarea Ant.

Puede hacer muchas cosas, pero también es totalmente sintonizable. Para que pueda mantener su ofuscación simple. Una de las opciones es generar una "Tabla de correspondencias de símbolos", que le permite recuperar el código no obsoleto del oculto. (realiza un seguimiento de que la variable xyz en la clase qksdnqd es de hecho myCuteVarName en la clase MeaningfulClassName)

Editar: La ofuscación puede ser complicada. Algunos ejemplos:

  • No puede cambiar el nombre de su método principal.
  • ¿Utiliza un cargador de clases? ¿Todavía puede recuperar la clase después de la ofuscación?
  • ¿Qué hay de su mapeo de ORM? Su contexto de primavera? (Si lo hay)

Edit2: También puede ver:

+0

Sí, sé de SC table. Pero mi equipo y yo no somos los gurús que pueden depurar fácilmente y cambiar código ofuscado incluso usando la tabla :) Así que estoy buscando una herramienta que me permita depurar código de forma transparente. – Vitaly

+0

No tiene que ser gurú, proporciona la tabla y el frasco oculto a la aplicación, y se vuelven legibles de nuevo (menos el comentario). Ah ... pero no creo que pueda "hotswaping" con este proceso (es como quitar y reemplazar todo el tarro) –

+0

Puede ser que no entiendo algo. ¿Podré "paso a paso" depurar remotamente el código ofuscado y ver el código "normal" al mismo tiempo en algún tipo de depurador (sin acciones adicionales como mirar la tabla, ejecutar otras aplicaciones, etc.)? – Vitaly

0

Ver SD Java Obfuscator. Elimina comentarios y espacios en blanco, y cambia el nombre de todos los miembros/métodos/nombres de clase que no son públicos.

También le proporcionó un mapa de cómo se ofuscó el código, por ejemplo, para cada símbolo FOO ofuscado como XYZ, un mapa FOO-> XYZ. Esto significa que si obtiene una traza inversa mencionando XYZ, puede determinar fácilmente el símbolo original FOO. Por supuesto, dado que solo usted (la persona que hace la ofuscación) tiene este mapa, solo usted puede hacer esto.

Cuestiones relacionadas