Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: [Yeikox] en 30 Septiembre 2008, 19:56 pm



Título: ¿Como Puedo Obtener el Codigo Desensamblado en Lenguaje C?
Publicado por: [Yeikox] en 30 Septiembre 2008, 19:56 pm

Saludos, tengo una duda y es la siguiente, es posible obtener el codigo fuente en lenguaje C de cualquier ejecutable ? yo se que actualmente muchos utilizan el ollydbg para desensamblar el codigo fuente de un ejecutable, y asi poder ver sus instrucciones en ensamblador, pero yo quisiera convertir este codigo en C.

Hace algun tiempo habia investigado y me di cuenta de que existian varios programas que permitian obtener codigo en c a partir de un ejecutable, pero lamentablemente no todos funcionaban bien, ademas su buen funcionamiento dependia de otro factor, y era el compilador que se habia utilizado para generar dicho ejecuable, es por eso que quisiera plantear esta duda para saber si alguien tiene alguna solucion, informacion o link al respecto.

Muchas gracias por dedicar un poco de su tiempo en leer este post!!!  ::)


Título: Re: ¿Como Puedo Obtener el Codigo Desensamblado en Lenguaje C?
Publicado por: KJD en 30 Septiembre 2008, 20:35 pm
Que tal Yeikox, te comento que es imposible obtener codigo fuente en c de un exe, la unica manera es como tu dices con ollydbg para ver el asm del exe pero nada mas. Posiblemente tu Confusión venga de que hayas visto programas que obtienen codigo de ejecutables echos en Visual basic o en la plataforma .net de microsoft. Con estos lenguajes si se puede obtener algo aprecido al codigo fuente, ya que estos programas son en tiempo de ejecucion y se peude llegar a obtener algo parecido al codigo original.


Título: Re: ¿Como Puedo Obtener el Codigo Desensamblado en Lenguaje C?
Publicado por: [Yeikox] en 30 Septiembre 2008, 22:55 pm

Ok, gracias por contestar KJD, pero te digo que no estoy confundido, o al menos eso creo yo :xD...

Bueno ya en serio  :P, la cuestion es que como mencione anteriormente hace algun tiempo pude ver algunos programas que hacian esta funcion, llamados decompiladores, el nombre exacto de cada programa no lo recuerdo en este momento, pero te digo que si era posible obtener el codigo en lenguaje C, creo que el procedimiento que estos programas utilizaban, era pasar primero el ejecutable a codigo ASM y luego hacer la conversion a lenguaje C, pero creo que el problema es que no siempre funcionaban y ademas el codigo C que se obtenia era muy extraño. Asi que partiendo de lo que te digo, creo que si es posible, y es por eso que pido ayuda a todos ustedes, si me pueden decir el nombre de algun programa que realize esta funcion o si me pueden dar alguna pagina en donde se hable sobre esto, muchas gracias a todos  ::).



Título: Re: ¿Como Puedo Obtener el Codigo Desensamblado en Lenguaje C?
Publicado por: Wofo en 30 Septiembre 2008, 23:04 pm
Probablemente sea un programa que obtenga el código en Ensamblador y luego lo traduzca (con muy mala calidad) a C.

Salu2


Título: Re: ¿Como Puedo Obtener el Codigo Desensamblado en Lenguaje C?
Publicado por: [Yeikox] en 30 Septiembre 2008, 23:21 pm
Probablemente sea un programa que obtenga el código en Ensamblador y luego lo traduzca (con muy mala calidad) a C.

Salu2

NO se, no se  :-\........ Todo es posible, personalmente no lo veo tan imposible de creer ya que estamos hablando de 2 lenguajes de programacion que son de bajo nivel, yo mejor creeria que la dificultad de obtener un codigo en C, se puede basar en lo complicado u ofuscado que sea el codigo en si, por ejemplo:

Código
  1. #include <stdio.h>
  2.  
  3. void (main){
  4.       printf("Hello World!!!\n");
  5.       printf("No me decompiles por favor, xD");
  6.       getch();
  7.       return;
  8. }
  9.  

No creo que obtener este codigo en C a partir de su ejecutable sea imposible, logicamente teniendo las herramientas adecuadas, lo cual es basicamente mi pregunta......

Esperemos si alguien aporta alguna dato de como podria ser esto posible, salu2   ::)



Título: Re: ¿Como Puedo Obtener el Codigo Desensamblado en Lenguaje C?
Publicado por: byebye en 1 Octubre 2008, 01:03 am
si podrias sacar el codigo C de ese programa usando el desensamblado, pero ese programa que tu ya conoces. uno de los problemas que te puedo decir es que cada compilador hace las cosas a su modo...... y reconocer esto en un codigo compilado ya te complica la vida. como te dicen no hay programa que traduzca el codigo a c y si lo hay la traduccion sera como sera... "mala".

lo que puedes hacer es simple, igual que cuando escribes un keygen tu no escribes el codigo exacto que escribio el programador, escribes un codigo diferente que hace el mismo trabajo. pues desensambla mira lo que te interesa y intentas implementarlo.


Título: Re: ¿Como Puedo Obtener el Codigo Desensamblado en Lenguaje C?
Publicado por: tena en 1 Octubre 2008, 02:56 am
No se puede decompilar C.

Se puede tener una aproximacion o traduccion mala...
Dicen que este plugin de IDA es bastante bueno, se llama HexRays.

http://ricardonarvaja.info/WEB/OTROS/HERRAMIENTAS/F-G-H-I-J-K/IDA%205.2/Hex-Rays.Decompiler.v1.0.for.DataRescue.IDA.Pro.Advanced.v5.2.zip

Lo que hace es traducir el codigo desensamblado a un pseudo C. No lo he probado asi que tu ya diras..

Saludos


Título: Re: ¿Como Puedo Obtener el Codigo Desensamblado en Lenguaje C?
Publicado por: [Yeikox] en 11 Octubre 2008, 03:05 am
Gracias por las respuestas ®® y tena, habia estado algo ocupado y no pude contestar antes, pero creo que aun no tenemos una solucion definitiva a este problema, por una parte esta la url de ricardo narvaja que menciona tena, pero esa informacion es algo antigua ya que hace bastante tiempo estuve revizando todo su contenido, muy bueno por cierto, entonces considero que despues de tanto tiempo que ha pasado, debe existir algun programa que logre realizar una traducion un poco decente de un ejecutable a lenguaje C, asi que les agradeceria si alguno de ustedes pudiera proporcionar algo de informacion para lograr hacer esto, ya que mi objetivo no es lograr decompilar algun software de uso privativo para ver su codigo, si no simplemente lograr decompilar ejecutables creados por mi, codigos sencillos.

Saludos a todos y gracias por cualquier tipo de ayuda que puedan ofrecer.  ::)


Título: Re: ¿Como Puedo Obtener el Codigo Desensamblado en Lenguaje C?
Publicado por: ........... en 11 Octubre 2008, 03:13 am
Si lo hubiera, ya no haría falta esta sección del foro  :D