Tengo un programa en el que perdí el código fuente de C++. ¿Existen buenos descompiladores de C++?
ya me he cruzado Bumerang.
bryan denny
Tengo un programa en el que perdí el código fuente de C++. ¿Existen buenos descompiladores de C++?
ya me he cruzado Bumerang.
Puedes usar AIF Pro por Rayos hexagonales. Por lo general, no obtendrá un buen C ++ de un binario a menos que compile información de depuración. Prepárate para pasar un lote del trabajo manual invirtiendo el código.
Si no eliminó los binarios, hay alguna esperanza, ya que IDA Pro puede producir un código similar a C para que pueda trabajar. Sin embargo, por lo general es muy tosco, al menos cuando lo usé hace un par de años.
Para aclarar, IDA solo dará el desmontaje. Hay un complemento llamado Hex-Rays que descompilará el resto del camino en fuente C/C++, en la medida de lo posible.
– davenpcj
5 mayo 2012 a las 12:55
Según mi lectura de los documentos, los rayos hexadecimales solo generan C como pseudocódigo. No es que eso lo haga inútil para descompilar C++, solo necesita saber un poco sobre cómo los compiladores convierten las estructuras de C++.
–Michael Anderson
11 de abril de 2013 a las 5:32
Para aclarar un poco más, Disassembly es lo máximo que puede descompilar con Hex-Rays traducirá ASM a C ++ ASM se puede traducir a cualquier lenguaje de programación con trabajo, ya que todos los programas pueden ejecutarse como ASM
– Barkermn01
12 de abril de 2014 a las 12:08
SNOWMAN es un buen descompilador gratuito de C++
– Inga
13 de abril de 2018 a las 1:05
+1 para Snowman, pero como otros han mencionado, incluso un simple Hola Mundo se vuelve prácticamente ilegible una vez descompilado.
– bdetweiler
2 de diciembre de 2018 a las 17:28
Dustin Getz
la información se descarta en el proceso de compilación. Incluso si un descompilador pudiera producir el código lógico equivalente con clases y todo (probablemente no pueda), la parte de autodocumentación desaparece en el código de versión optimizado. Sin nombres de variables, sin nombres de rutinas, sin nombres de clases, solo direcciones.
“el alma” del programa se ha ido, solo una cáscara vacía de lo que era antes…”
– Darshan Chaudhary
14 de agosto de 2017 a las 17:36
Sí, pero ninguno de ellos logrará producir un código lo suficientemente legible como para que valga la pena el esfuerzo. Pasará más tiempo tratando de leer el código fuente descompilado con bloques ensambladores en su interior, que reescribiendo su antigua aplicación desde cero.
No he visto ningún descompilador que genere código C++. He visto algunos experimentales que hacen un intento razonable de generar código C, pero tienden a depender de hacer coincidir los patrones de generación de código de un compilador en particular (eso puede haber cambiado, ha pasado un tiempo desde la última vez que investigué esto ). Por supuesto, cualquier información simbólica desaparecerá. Google para “descompilador”.
Según el tamaño y la calidad del código original, podría valer la pena comenzar de nuevo en su lenguaje favorito (que aún podría ser C++) y aprender de los errores cometidos en la última versión. ¿No dijo alguien una vez sobre escribir uno para tirar?
nb Claramente, si este es un gran producto, entonces puede que no valga la pena.
Joel es un gran columnista, pero a veces se equivoca. Y luego hay momentos en los que se cita mal. Como aquí, ya que la pregunta se centra en la pérdida del código fuente. El artículo de Joel explica por qué el código fuente es valioso.
– MSalters
16 de octubre de 2008 a las 10:47
¿No dijo alguien una vez sobre escribir uno para tirar? Sí, y cambió de opinión. davewsmith.com/blog/2010/brook-revisits-plan-to-throw-one-away [I]n 1975, aconsejé a los programadores que “tiraran la primera versión” y luego construyeran una segunda. Para la edición del vigésimo aniversario, me di cuenta de que la iteración incremental constante es un enfoque mucho más sólido
– ta.speot.es
6 de abril de 2015 a las 3:13
Joel es un gran columnista, pero a veces se equivoca. Y luego hay momentos en los que se cita mal. Como aquí, ya que la pregunta se centra en la pérdida del código fuente. El artículo de Joel explica por qué el código fuente es valioso.
– MSalters
16 de octubre de 2008 a las 10:47
¿No dijo alguien una vez sobre escribir uno para tirar? Sí, y cambió de opinión. davewsmith.com/blog/2010/brook-revisits-plan-to-throw-one-away [I]n 1975, aconsejé a los programadores que “tiraran la primera versión” y luego construyeran una segunda. Para la edición del vigésimo aniversario, me di cuenta de que la iteración incremental constante es un enfoque mucho más sólido
– ta.speot.es
6 de abril de 2015 a las 3:13
objdump
para Linux– Stypox
11 de marzo de 2020 a las 16:47
cortador.re para una gran interfaz gráfica de usuario y un gran descompilador incorporado
– Misiur
10 de abril de 2020 a las 1:01