English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
Todas las categorías

Programo Orientado a Objetos y estructurado en C y sus variantes, al compilarlos genera un .exe. Me gustaría saber si hay un programa que, a partir del .exe me genere el código en .c o .cpp.
Nota: Obviamente el .EXE es el que genera el C.
Saludos y Gracias

2006-12-21 19:37:11 · 5 respuestas · pregunta de Anonymous en Ordenadores e Internet Programación y Diseño

5 respuestas

Pues mucho me temo que no va a ser posible.

Lo que tu buscas, un de-compilador, solo esta disponible para lenguajes de programación interpretados, es decir, que no se compilan o se hace una semi-compilación a lenguaje intermedio interpretado (Java, perl, toda la gama .NET de microsoft).

En cambio el C++ se compila, es decir, se traduce todo a código maquina, y no hay manera de volver al código original. Lo máximo que puedes conseguir es el código en assembler, podría servir para entender algún trozo pequeño de programa, pero no para editarlo tranquilamente.

La única esperanza seria que estés hablando de C++ Managed de .NET, pero no creo que sea así. Si es el caso avisa que ya buscaríamos un de-compilador para .NET.

Regards,
enraged

-----------------------------------------------------------------------------------
Nota al dr. Cabra:
1. Mi nick es enraged.
2. La cadenas de texto estáticas no se compilan, así que lo que hacías con el driver del ratón se puede hacer con un bloc de notas.
3. NO SE PUEDE VOLVER AL CÓDIGO ORIGINAL. Se puede sacar el assembler con un disassembler, y hay programas que te INTENTAN traducir ese código assembler a C++, pero ni conservan comentarios, ni nombres de variables ni tan solo la estructura original del programa, solo un código c++ que teóricamente hace lo mismo, pero a la practica esos programas solo pueden de-compilar un "Hello world!" i poco mas.
4. No se los de tu época, pero los compiladores actuales aplican mas técnicas de optimización de código que las que se te puedan ocurrir a ti escribiendo assembler a pelo. Es cierto que hay lenguajes que desperdician recursos, los interpretados, pero a cambio ofrecen otras ventajas.

2006-12-21 19:52:48 · answer #1 · answered by enraged 2 · 1 0

vamos enraged!!

2006-12-22 10:29:23 · answer #2 · answered by Aleks 7 · 0 0

Es imposible en C++, ya que todo está en lenguaje máquina, lo más que te podrías acercar es usar un desensamblador, pero esto convertirá el programa ejecutable en lenguaje ensamblador, no en lenguaje C++

Si se pudiera ya se habría descompilado y mejorado el SO Windows desde hace mucho.

2006-12-22 05:19:36 · answer #3 · answered by Pedacero 3 · 0 0

No es posible. Entre otras cosas porque los compiladores, una vez generado el código, lo optimizan, y se pierden los nombres de procedimientos (llamados funciones en C y C++) y variables. Lo que sí es posible es general el código en ensamblador, ya que cada instrucción en ensamblador coincide con una instrucción en código máquina. En cambio, con las máquinas virtuales (Java y Microsoft .NET) la cosa cambia, aunque sigue siendo difícil.

2006-12-22 04:40:22 · answer #4 · answered by Carlos G 5 · 0 0

En realidad lo que dijo "enlared" No es cierto del todo, hay decompiladores específicos para C++, para Pascal y para todo tipo de leguajes de programación, incluido Visual Basic.

Yo lo he hecho en Muchas Ocasiones, antes (en los 80 y 90) era Muy Común que cuando te ponías a estudiar informática lo primero que hicieras fuera, por ejemplo, coger el Driver de tu Ratón, ylo decompilaras, para sacar el código fuente. Luego cambiaras todos los Textos para que aparecieran en Español y con Tu Nombre como si tú fueras el creador del driver. Y se lo dabas a tus amigos para "fardar" con algo así como "Mira, llevo un mes estudiando informática y ya se hacer un driver para ratón, usalo para tu PC que es mejor que el que tú tienes". Y quienes No sabían nada de nada se quedaban con la boca abierta.

Así que, existir, si que existen. Lo que pasa que No hago algo así desde el 95, así que No estoy muy actualizado en decompiladores.

Busca en softonic, o sino en los foros de "Hackers" y seguro que enseguida encuentras más de un decompilador.

Incluso he tenido en mis manos decompiladores que eran también editores Hexadecimales (algo muy útiles).

En cuanto lo que dijo "enlared", es Cierto que el compilador, al pasarte de C++ a .exe te transforma el código a código máquina. Pero lo hace de una forma Muy "Robótica" (y poco optimizada), por lo que luego es Facil, mirando ese código máquina, SABER si proviene de un código C++, de Pascal, o de cualquier otro.


Ah! Por cierto, a la hora de Programar, SIEMPRE te aconsejo que las Rutinas más Importantes y los Bucles que más se utilicen, los programes Directamente en código máquina. Si un bucle se repite 1 Millón de Veces, y te tomas la molestia de programarlo en código máquina directamente, te encontrás con que tu programa es 100 veces más rápido que los de los demás.

Yo hacía esto en clase de programación. Los programas de mis compañeros tardaban 5 minutos en realizar el calculo, y los mios tardaban 5 segundos (trabajabamos con 286 de aquella :-)

Ese es el problema de los Programas Actuales, los programan Completamente en C++ (o similar) y No se toman la molestia de programar los bucles que más se repiten en código máquina, lo cual los haría cien o mil veces más rápidos. Así se desperdicia la cantidad de Recursos que se desperdician hoy en día.

2006-12-22 04:05:55 · answer #5 · answered by DrCabra dice: Beeeeee 4 · 0 0

fedest.com, questions and answers