Sv Community El Salvador
Soporte y Tecnología => Programación => Mensaje iniciado por: Polaco en julio 04, 2005, 04:55:35 pm
-
Quiero saber con que sw puedo aplicar ingeniería inversa, partiendo de codigo java, quiero obtener la respectiva representación en UML(con sus atributos y metodos) de las clases, asi como sus relaciones, multiplicidades, relaciones de herencia e implementación de dichas clases. Es resumen obtener el diagrama de clases y el diagrama de secuencias.
Me habian hablado de Poseidon.
Si saben algo, me informan.
-
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.html
JAD (Java DEcompiler) Herramienta de linea de comandos pero es la mas rapida y hay una que otra interfaz grafica.
http://kpdus.tripod.com/jad.html
Java -> UML
Modelistic 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.html
Para linux
Umbrello 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.php
Hay 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
-
hey man thanks por la info. :thumbsup: Me ha servido mucho. despues te cuento en que termino.
Aunque segunn ciertas fuentes, dicen que la ingeniería inversa tiene que ver con lo que crakeas. pero ya vere que ondas!
-
se ve que esta gente lee más y ve Discovery Channel
-
hey man thanks por la info. :thumbsup: Me ha servido mucho. despues te cuento en que termino.
Aunque segunn ciertas fuentes, dicen que la ingeniería inversa tiene que ver con lo que crakeas. pero ya vere que ondas!
Ps fijate que los cracks no necesariamente son relacionados con ingenieria inversa.. sin embargo muchas veces se utilizan tecnicas de ingenieria inversa para poder crear los cracks... se le llama ingenieria inversa porque vos estudias un resultado para tratar de averiguar el proceso que lo genero, sería algo así como si te mostraran un edificio y tuvieras que dibujar los planos, sin conocer los planos originales porsupuesto, tendrias que investigar de que materiales esta hecho, como es la estructura y luego de todo eso puedes dibujar los planos, mas o menos así funciona la ingenieria inversa. Si en un procedimiento de ingenieria normal tenes un problema y buscas la solución, en ingenieria inversa tenes la solución y tenes que encontrar el problema jejejeje :P es un poco mas complicado pero en general a eso se refiere.
-
Pues es cierto la verdad es que si lo que andas buscando es un descompilador esta mero yuca por que estos programas no son tan fieles que digamos para prueba un boton ahi tenes el Refox...un programa muy util para los que buscan codigos de programas ya ensamblados y todos pero analizando el codigo detenidamente sucede lo que dice mxgxw...que el codigo no queda exctamente igual que como fue escrito en un principio entonces debes aplicar tu sentido comun y la logica de programacion para poder determinar en realidad los procedimientos que el programa realiza a partir de una solucion dada....Suerte!!! :thumbsup:
-
para los cracks la solucion es un editor hexadecimal tipo debug, pero claro tendrias que tocar el sistema de manera my distinta ya que seria lenguaje ensamblador con el que estarias tratando