Test Foro de elhacker.net SMF 2.1

Programación => Ingeniería Inversa => Mensaje iniciado por: Kaxperday en 9 Junio 2015, 18:03 PM

Título: Ingenieria inversa en c++
Publicado por: Kaxperday en 9 Junio 2015, 18:03 PM
Hola no se si me podrán decir algun programa que decompile un ejecutable en cpp. Como por ejemplo hace el .NET reflector para C#. Es decir obtener del ejecutable el código directamente a ser posible. Saludos
Título: Re: Ingenieria inversa en c++
Publicado por: engel lex en 9 Junio 2015, 18:06 PM
no se puede...

en el caso de .net sucede que el codigo queda casi entero para ser interpretado por la "maquina virtual" de .net (dotnet framework) como si de un script se tratara, en el caso de c++ se pasa el codigo directo a ensamblador y debido a la forma que el ensamblador trabaja (hace un trabajo "inteligente" analizando el código y tratando de  optimizarlo lo más posible) es imposible comprender desde el resultado, cual era el código original :P

Título: Re: Ingenieria inversa en c++
Publicado por: Kaxperday en 9 Junio 2015, 19:24 PM
Entiendo, gracias por la respuesta. Aun asi el .NET reflector creo que leí que trabajaba tambien para cpp, pero lo hara de manera menos eficiente seguramente, no lo he probado ni lo tengo es para saber antes que nada. Probe el ollydebugger y si esa es la unica manera  o el unico estilo de programa para hacer ingeniería inversa estoy jodido.

He de decir que hace tiempo en clase (años) haciamos ingenieria inversa de c a ensamblador y viceversa, pero era un asm basico y era bastante sufrido, no quiero imaginar hacer ingenieria inversa a un programa como intercepter-ng (digo este porque es curioso debido a los atauqes de red que presenta) ademas corregidme si me equivoco, ¿para usar .NET reflector o dexompilar con ollydebugger el programa es necesario que no este protegido o cifrado no? Sino el reflector no funcionaria y el ollydebugger nos saldria mucho mas complicado.

Lyego seria necesario romper el cifrado que protege al archivo antes que usar el.NET reflector, sino no apareceria nada si no me equivoco, ¿como lo hara entonces la gente?

Saludis.
Título: Re: Ingenieria inversa en c++
Publicado por: kub0x en 9 Junio 2015, 19:48 PM
Cita de: Kaxperday en  9 Junio 2015, 19:24 PM
Entiendo, gracias por la respuesta. Aun asi el .NET reflector creo que leí que trabajaba tambien para cpp, pero lo hara de manera menos eficiente seguramente, no lo he probado ni lo tengo es para saber antes que nada. Probe el ollydebugger y si esa es la unica manera  o el unico estilo de programa para hacer ingeniería inversa estoy jodido.

En C++/CLI que no es C++ Win32 nativo, es una versión de C++ adaptada a .NET, por lo tanto código intermedio.

Cita de: Kaxperday en  9 Junio 2015, 19:24 PM
Lyego seria necesario romper el cifrado que protege al archivo antes que usar el.NET reflector, sino no apareceria nada si no me equivoco, ¿como lo hara entonces la gente?

Una opción es esperar a que el proceso llame a la rutina de descifrado y así guardar el binario descifrado, pero éste sería un escenario básico.

Saludos.
Título: Re: Ingenieria inversa en c++
Publicado por: MCKSys Argentina en 9 Junio 2015, 23:04 PM
Hola!

Si el ejecutable C++ no está protegido, puedes usar IDA para analizarlo y luego el plugin X-Rays para generar un código bastante parecido al fuente, de las funciones que te parezcan intersantes.

Saludos!
Título: Re: Ingenieria inversa en c++
Publicado por: Stakewinner00 en 10 Junio 2015, 00:18 AM
Cita de: MCKSys Argentina en  9 Junio 2015, 23:04 PM
Hola!

Si el ejecutable C++ no está protegido, puedes usar IDA para analizarlo y luego el plugin X-Rays para generar un código bastante parecido al fuente, de las funciones que te parezcan intersantes.

Saludos!

Pero tengo entendido que generara un código en C, no en C++, y en caso de que el programa haya sido compilado con flags de optimización simplemente quedará una abstracción en C del código ensamblador, pero quedara un código más parecido al de ASM que al código fuente original lógicamente.
¿Igual el plugin ese es capaz de interpretar clases en C++?, no lo se seguro ya que nunca use el plugin ese (ya que es de pago y no es barato...)
Título: Re: Ingenieria inversa en c++
Publicado por: MCKSys Argentina en 10 Junio 2015, 00:38 AM
Cita de: Stakewinner00 en 10 Junio 2015, 00:18 AM
Pero tengo entendido que generara un código en C, no en C++, y en caso de que el programa haya sido compilado con flags de optimización simplemente quedará una abstracción en C del código ensamblador, pero quedara un código más parecido al de ASM que al código fuente original lógicamente.
¿Igual el plugin ese es capaz de interpretar clases en C++?, no lo se seguro ya que nunca use el plugin ese (ya que es de pago y no es barato...)

Tienes razón. Te genera código C, no C++.
La interpretación corre por cuenta de quien usa el programa. En reversing es muy útil. Incluso si el programa está hecho en C++.

Cabe notar que debes conocer ASM si e que quieres reversear algo.

Saludos!