Mira, lo primero, para aplicar ingenieria inversa necesitas un decompilador de java, Ojo, el decompilador no te devuelve el codigo exacto de lo que se programo, sino como el compilador dejo la clase luego del preprocesado, esto significa que posiblemente no encontres exactamente la informacion que estes buscando, ni las clases necesarias, a veces incluso no se encuentran exactamente con el mismo nombre porque el compilador los cambia.
Hay cierto codigo Java que esta "ofuscado", es decir que antes de compilarlo un programa ofuscador "desordeno" por decirlo así, el codigo de tal manera que generó un nuevo archivo de codigo fuente que hace exactamente lo mismo que el original pero cuyas funciones y algoritmos estan modificados, muchas veces las funciones son partidas en varias partes, se cambian los nombres de las funciones por cadenas de caracteres ilegibles y cosas por el estilo. Aunque podras decompilar estas clases el análisis de las mismas resulta bastante complicado y es el principal mecanismo de seguridad que se utiliza en java y lenguajes similares para evitar ingenieria inversa.
Asi que si te encontras un archivo que al descompilarlo parece tener muchas funciones "basura" o resulta peculiarmente complicado probablemente es que había sido ofuscado.
Ahora con las herramientas aqui hay algunas que encontre por internet:
Decompiladores de Java:DJ Java decompiler
http://members.fortunecity.com/neshkov/dj.htmlJAD (Java DEcompiler) Herramienta de linea de comandos pero es la mas rapida y hay una que otra interfaz grafica.
http://kpdus.tripod.com/jad.htmlJava -> UMLModelistic es una extensión para Java XP de Eclipse (Una herramienta de desarrollo), Facilita el trabajo de ingenieria inversa convirtiendo los archivos java en diagramas UML.
http://www.modelistic.com/UModel Es una herramienta comercial integrada para la ingenieria inversa en java, al igual que la anterior convierte directamente desde codigo de Java hacia UML 2.0
http://www.altova.com/products_umodel.htmlPara linuxUmbrello Es una herramienta de UML, aunque tambien soporta ingenieria inversa (codigo->UML), la unica desventaja es que esta unicamente para KDE en Linux.
http://uml.sourceforge.net/index.phpHay un programita que lo conocí en la U para dibujar diagramas de UML, se llama ArgoUML es bastante facil de usar y posee un generador de codigo que facilita la programacion.
ArgoUML:
http://www.argouml.org/Tambíen aqui hay una páginita con varias URL a otras herramientas que te pueden servir para lo que deseas hacer... echale un ojo es masque seguro que vas a encontrar una o varias aplicaciones que te van a servir:
http://plg.uwaterloo.ca/~migod/uml.html