¡Gracioso!
1. No hay ningún programa que pueda convertir un .exe a .cpp.
2. Incluso si existiera, la salida sería completamente ilegible y sería menos legible que cualquier listado de ensamblaje. También sería imposible verificar que la salida es “el mismo programa” que el .exe. Si lo compila nuevamente, lo más probable es que difiera sustancialmente del .exe original y no habría forma de asegurarse de que hiciera lo mismo que el programa original.
3. Incluso si existiera un programa de este tipo y generara un código legible, aún tendría que luchar contra problemas legales cada vez que intentara utilizar el programa en cualquier aplicación que no haya escrito usted mismo.
- ¿Cuáles son algunas herramientas / lenguaje / marco para leer el archivo .csv? ¿El cálculo lo coloca en un archivo .txt en la ubicación de la red?
- ¿Cuál es el mejor sitio para convertir un PDF a JPG?
- Cómo convertir un archivo de Excel a formato SIF
- Cómo crear una excelente presentación a partir de un documento de Word
- En la programación en C, ¿se puede acceder a una variable estática de un archivo desde otro archivo?
El punto 1 anterior es algo importante, pero no di las razones por las cuales no hay ninguno. La razón de esto es que las razones son demasiadas y el razonamiento detrás de esto es bastante elaborado.
En primer lugar, ¿qué te hace pensar que el programa estaba originalmente en C ++ en primer lugar? ¿Qué pasa si el programa fue originalmente un programa Fortran? ¿Debería entonces producir “C ++ equivalente” para ese código fortran? ¿Cómo adivinaría el descompilador de C ++ qué significado tendría el compilador fortran en el uso de registros, etc.?
Peor aún, el programa podría haber sido originalmente un programa de ensamblaje donde el programador de ensamblaje tiene total libertad en cuanto a qué registros se utilizan para qué propósito y sería imposible generar un código C ++ significativo a partir de él.
En segundo lugar, el programa generado cuando se vuelve a compilar en .exe usando un programa C ++, incluso si es correcto, aún tendría diferencias sustanciales con respecto al .exe original. Quizás el compilador C ++ con el que lo compiló era de una marca diferente que el compilador C ++ original que creó el archivo .exe original. Por lo tanto, su .exe sería diferente. Incluso si es el mismo compilador, podría estar usando diferentes opciones de tiempo de compilación, como opciones de optimización, etc., por lo que el código sería sustancialmente diferente. No hay forma de que pueda, en ningún sentido de las palabras, establecer que los dos archivos .exe serían ‘equivalentes’ o que los dos programas “hicieron lo mismo”.
Hay disponibles desensambladores en el mercado e incluso esos no son tales que simplemente los ejecute y produzcan un código de ensamblaje que pueda leer. Desmontar el código de .exe a .asm es un proceso elaborado en el que primero lo ejecuta una vez, intenta descifrar lo que intentan hacer las primeras instrucciones, proporciona nombres a varias variables y funciones y luego lo ejecuta nuevamente para descifrar un poco más, etc. un 20-30 de este tipo de desmontaje ejecuta el inicio de salida para parecerse a cualquier cosa que un programador ensamblador pueda escribir y se asemeje a cualquier cosa que parezca un código legible.
Para un lenguaje de alto nivel como C ++, la distancia al código de la máquina es mucho mayor y una instrucción puede generar desde 1 hasta varias 100 instrucciones en una máquina, si el desensamblador requeriría 20-30 ejecuciones, un descompilador de C ++ requeriría algo como 2000- 3000 ejecuciones antes de obtener algo parecido al código legible. Ahora, tenga en cuenta que el código podría haber sido compilado con diferentes opciones o con un compilador diferente al que cree que es y aumentará fácilmente ese número a 200000 o 500000 ejecuciones. Ahora, ¿descompilarías un pequeño programa medio millón de veces, cada vez que leas el código generado tratando de darle sentido? ¡Te tomaría menos tiempo escribir el programa!
Ahora, también, lo anterior es para un pequeño programa simple que son algunas líneas de código. Si desea descompilar un juego o una gran aplicación como Word o Excel, etc., tomará varios factores más trabajo que el anterior.
En resumen, no vale la pena y no hay mercado para tal programa y sería extremadamente difícil de escribir y solo se aplicaría a un pequeño número de casos y solo funcionaría en programas muy pequeños, programas que puede descubrir por simplemente mirando el código hexadecimal de todos modos. Cualquier cosa más grande que eso sería casi imposible de descompilar.
Así que olvídalo.
Ahora, ni siquiera me esforcé en los aspectos legales. SI lograste escribir un “descompilador perfecto” y SI lo ejecutaste en cualquier programa que alguien más escribió, puedes estar seguro de que enviarán una horda de abogados después de ti y cuando terminen contigo, estarás en quiebra, probablemente en prisión y marcado de por vida.
De nuevo, olvídalo.