Cómo ver el código fuente de un programa exe escrito en C++
Las razones son las siguientes:
C es un lenguaje de alto nivel y el proceso de compilación de un lenguaje de alto nivel consiste en convertir primero el lenguaje de alto nivel en código intermedio. Luego conviértalo en ensamblador y finalmente use el ensamblador para convertirlo al código binario de la máquina correspondiente, que es un archivo exe común en Windows. Debido a que se puede decir que el código ensamblador y el código máquina tienen una correspondencia casi uno a uno, es factible desensamblar el exe en código ensamblador, pero no más. Debido a que los lenguajes de alto nivel son estructuralmente diferentes del ensamblador, las llamadas recursivas, por ejemplo, definitivamente se traducirán en implementaciones de pila no recursivas en ensamblador. Se puede lograr la traducción directa, pero no la traducción inversa.
Además, los lenguajes de alto nivel tienen un grado de libertad mucho mayor que el ensamblador. Un mismo código ensamblador puede compilarse con diferentes lenguajes de alto nivel, por lo que los lenguajes de alto nivel y los códigos ensambladores. no se corresponden uno a uno.
Si estás interesado, puedes leer libros sobre principios de compilación.
Si tienes alguna pregunta, no dudes en preguntar.