PDA

Ver la versión completa : Abrir un programa escrito en C



osbornini
06-02-2010, 17:26
Buenas el caso es que me descargue un programa, un exe, y averigue que estaba compilado y escrito con C++ y me gustaria saber como puedo conocer el codigo fuente para saber como funciona y lo que hace. Espero que me podais echar una mano!

Gracias!

Fruit
06-02-2010, 18:12
En todo caso te la echaríamos (sin la hache)...

Devolver un programa compilado en C/C++ a su código original es totalmente imposible, pero se puede convertir en código ensamblador, con algún programa tipo IDA, W32DASM, etc.

osbornini
07-02-2010, 15:47
editado, culpa mia...xD gracias por la informacion veré que puedo hacer

hystd
07-02-2010, 16:11
Si es posible... Lo único es que existen infinitas traducciones de un lenguaje GOTO-computable a un lenguaje de alto nivel (con un nivel de abstracción superior), y viceversa... No voy a entrar en demostraciones matemáticas porque no tego teclado... :s

Busca por "Descompilador C++", vuelvo a decir, la traducción no será 100% exacta al original.

Un saludo.

Fruit
07-02-2010, 21:22
Echa un ojo a: http://www.parashift.com/c++-faq-lite/compiler-dependencies.html#faq-38.4

hystd
08-02-2010, 02:54
Ese faq solo resume algunas cuestiones, que como comenté, se basan en que hay infinitas formas de traducir un código de alto nivel a un lenguaje GOTO-Computable, como es el caso de un fichero que contiene las instrucciones entendibles por el procesador... pero eso no quiere decir que no se pueda, simplemente que una posible traducción que pueda hacer un descompilador, probablemente no se corresponda idénticamente a la original.

Un saludo.

Fruit
08-02-2010, 15:57
Sigue sin parecerme viable una traducción "automática" de código máquina a código fuente.


...una posible traducción que pueda hacer un descompilador, probablemente no se corresponda idénticamente a la original.

Es que no se va a parecer en nada, piensa en las miles de optimizaciones que hará el compilador a la hora de compilar...

hystd
08-02-2010, 20:59
Puede que no se parezca en nada, pero es una traducción a alto nivel igual de válida que la original.

Un saludo.

Fruit
08-02-2010, 21:39
Puede que no se parezca en nada, pero es una traducción a alto nivel igual de válida que la original.

Un saludo.

No me expliqué bien... quise decir que descompilar un programa en C++ y, por ejemplo, partir las clases independientemente, según tengo entendido, es muy difícil.

Vamos, que descompilas un programa en C++ y te sale en C.

Marchi
24-02-2010, 02:14
En teoría es perfectamente válido lo que cuenta hystd, incluso si se pudiera definir una métrica para calcular la disimilitud entre programas de forma de crear una cota que distinga programas trivialmente equivalentes*, cosa que informalmente es bastante factible, se demostraría que la cantidad de formas de transformar un programa en un lenguaje GOTO-computable en uno en un lenguaje de alto nivel están acotadas.

De ahí a la práctica hay un camino que aún no ha sido muy recorrido.


Saludos