Ingenieria inversa en c++

Iniciado por Kaxperday, 9 Junio 2015, 18:03 PM

0 Miembros y 1 Visitante están viendo este tema.

Kaxperday

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
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.

engel lex

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

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Kaxperday

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.
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.

kub0x

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.
Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate


MCKSys Argentina

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!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Stakewinner00

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...)

MCKSys Argentina

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!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."