Solución:
No puede obtener la fuente C ++ de un exe, y solo puede obtener alguna versión de la fuente C # a través de la reflexión.
Si el programa se escribió en C #, puede obtener el código fuente en casi su forma original usando .NET Reflector. No podrá ver los comentarios ni los nombres de las variables locales, pero es muy legible.
Si fue escrito en C ++ no es tan fácil … incluso si pudieras descompilar el código en C ++ válido, es poco probable que se parezca a la fuente original debido a las funciones y optimizaciones en línea que son difíciles de revertir.
Tenga en cuenta que mediante la ingeniería inversa y la modificación del código fuente, es posible que infrinja los términos de uso de los programas, a menos que los haya escrito usted mismo o tenga permiso del autor.
Si es código nativo, puede desensamblarlo. Pero no verá el código original escrito por el programador. Verá el código producido por el compilador (ensamblador). Este código posiblemente esté optimizado y, aunque es semánticamente equivalente, puede ser mucho más difícil de leer que el ASM normal.
Si es un código de bytes (MSIL o javabytecode), hay un decompilador que puede producir un código fuente bastante bueno. Para .net, esto sería reflector.