ver codigo fuente de un programa

ICHIRO
02 de Abril del 2002
mi mensaje es con el fin de preguntarles si para yo ver el codigo fuente de un programa ya hecho y funcionando lo puedo hacer con el compilador o nescesito un debugger.
uso en compilador borland c/c++ 5.0

Astharoth
02 de Abril del 2002
Parto de la base de que lo unico de lo que dispones es del ejecutable.

Para ver el "codigo fuente" de ese ejecutable, has de verlo con un debugger. Si el programa en cuestion tiene incluidos los simbolos de debug, podras ver los nombres de las funciones y los nombres de las variables, aunque el codigo que veas no sera C ni C++, sera el ensamblador generado por el compilador. Aunque leer este si se disponen de los simbolos de debug es trivial.

Otra cosa es que dispongas del program database o similar a parte del ejecutable (si estuviera compilado con VC por ejemplo), que te facilitaria con mucho la tarea. Esto depende del compilador que se utilizo en su dia para generar el ejecutable (cada compilador tiene su propia base de datos de simbolos,etc). En concreto para VC son los ficheros PDB.

En cuanto al debugger a usar? . Esto depende mucho de lo que se quiera depurar. La ingenieria inversa no es algo trivial y dependiendo de lo que se quiera se puede utilizar una herramienta u otra.

Por ejemplo. Si se dispone de mas ficheros de simbolos,etc a parte del ejecutable, lo mejor es utilizar el compilador con el cual se genero el programa (cuando digo compilador , me refiero al entorno con el que se genero, casi todos llevan hoy en dia un debugger integrado).

Si no es asi, si lo que se ha de comprobar es algo sobre el funcionamiento del programa es recomendable usar SoftIce o Windbg (SoftIce da resultados excelentes usado en un solo ordenador, ya que para Windbg hay que disponer de dos conectados por null modem).

Para obtener solo el codigo desensamblado se puede utilizar el IDA, el cual da bastantes ayudas para navegar por el codigo en ensamblador.

Como ves es todo muy relativo, si replanteas tu pregunta quizas te pueda ayudar mejor.

Saludos.