Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-10-2003
frankmch frankmch is offline
Miembro
 
Registrado: jul 2003
Ubicación: venezuela
Posts: 76
Poder: 21
frankmch Va por buen camino
Descompilador

hola a todos.

mas que una duda es una curiosidad...

es posible descompilar un programa hecho con delphi?

de ser asi como se logra???

gracias
__________________
ing. frankmch
Responder Con Cita
  #2  
Antiguo 18-10-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Yo guardo todos los proyectos completos en 2 discos duros y además en 2 CDs, de esta manera muy mal se tiene que dar para que no recupere el código fuente, de hecho nunca se me ha perdido.

Respecto a esos programas que citas, yo conozco uno y me lo bajé y me alegré mucho al ver que solamente recuperaba los DFM, pero en los Pas no había código.

Código:
procedure TForm1.Button1Click(Sender: TObject);
begin
// Address $442EBC
end;
Ojala no existan.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 19-10-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Bueno, existir existen, no recuerdo ahora cuál vi alguna vez. Sin embargo de poco sirven porque el código lo ponen en ensamblador y de eso a hacer un debug con Delphi sobre un .exe no hay mucha diferencia...

// Saludos
Responder Con Cita
  #4  
Antiguo 20-10-2003
frankmch frankmch is offline
Miembro
 
Registrado: jul 2003
Ubicación: venezuela
Posts: 76
Poder: 21
frankmch Va por buen camino
Pareciese no tener logica el no poder descompilar un programa, si pensamos en un programa como una funcion matematica, que de hecho se comportan asi, toda funcion tiene su inversa, algunas veces en un rango de valores, pero esta existe.
entonces mi interrogante es:
por que no es posible obtener codigo fuente a partir de un programa compilado???

en lenguajes como java que se compilan en la computadora mediante la maquina virtual es mas sencillo ya que se tiene un codigo medio o objeto.

una razon que se me ocurre es de interes comercial, pero opino que es una tarea posible...

gracias por los comentarios...
__________________
ing. frankmch
Responder Con Cita
  #5  
Antiguo 20-10-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 24
kinobi Va por buen camino
Hola,

Cita:
Posteado originalmente por frankmch
toda funcion tiene su inversa, algunas veces en un rango de valores, pero esta existe.
En realidad no es así. Para que una función tenga inversa, debe cumplir que sea biyectiva (inyectiva y suprayectiva).

La traducción de código dista mucho de ser una función biyectiva.

Cita:
Posteado originalmente por frankmch
una razon que se me ocurre es de interes comercial, pero opino que es una tarea posible...
Existen argumentos de mucho más peso:

1. Dado un código binario (ejecutable directamente por una máquina determinada y del que desconoces como ha sido generado): ¿a qué lenguaje de alto nivel corresponde? ¿Tiene correspondencia con cualquier lenguaje de alto nivel?. Es decir, en primer lugar deberías conocer cual es el lenguaje original, y eso no siempre (casi nunca) es conocido.

2. Opciones diferentes de generación de código del mismo compilador (p. ej. optimizaciones) generan distintos binarios para el mismo código fuente, y sin conocer esas opciones (y no las conoces) no podrás regenerar el código fuente original. Eso suponiendo que hablemos de la misma versión del compilador, porque:

3. Diferentes versiones del mismo compilador generan códigos binarios diferentes para el mismo fuente. La misma situación que el caso anterior. Por no hablar de:

4. Utilizar diferentes compiladores para el mismo fuente. No existen dos compiladores diferentes del mismo lenguaje que generen el mismo binario para un código fuente dado.

5. Un compilador genera (normalmente) código binario a través de varias fases. Es decir, que incluso suponiendo que se pudieran solventar los problemas anteriores, habría que repetirlo a varios niveles, no en un único paso.

Desde luego pueden hacerse aproximaciones (inservibles, a no ser para casos triviales) al código original, pero una solución universal (que funcione y lo haga bien en todos los casos posibles) no existe.

Saludos.

Última edición por kinobi fecha: 20-10-2003 a las 05:08:59.
Responder Con Cita
  #6  
Antiguo 20-10-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Como interesante te recomiendo buscar un programa llamado DeDe, que extrae el DFM de los resources del EXE y deja el código en ASM en los eventos de los componentes.... Me ha servido mas de una vez para saber que es lo que hace una aplicación en un determinado momento...

Si conoces al menos la base del ASM, para cualquier exe Win32, te recomiendo probar softare como el IDA Pro, WinDasm, SoftIce....


Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #7  
Antiguo 21-10-2003
frankmch frankmch is offline
Miembro
 
Registrado: jul 2003
Ubicación: venezuela
Posts: 76
Poder: 21
frankmch Va por buen camino
gracias por todos lo comentarios.

muy ilustrativas todas las conjeturas y opciones a tener en cuenta para descompilar un programa.
recuerdoles que mi planteamiento original fue hecho para un programa en delphi.

replanteo la pregunta :

¿es posible descompilar un programa hecho en delphi 5?

conociendo todas las etapas e inconvenientes (en mi opinion salvables) nombrados anteriormente.

puede que sea una tarea muy ardua, y que talves no halla tenido la suficiente investigacion o dedicacion.

en un comentario anterior a este citaron una serie de inconvenientes como las fases de compilacion y de generacion de codigo objeto, el analisis lexico, semantico, etc, etc.
todo lo que incluye llevar el fuente al exe.
aun asi las razones que han citado no me parecen sufucientes para descartar la posibilidad de una descompilacion.

es claro el nivel de complejidad, pero en condiciones controladas y a sabiendas de varias variables se podria llegar a algo mas que codigo asm.

claro que se deben conocer muchos parametros de compilacion que son privados de borland, o microsoft, o la casa que haga el compilador.

mi interes es por delphi ya que es mi lenguaje de trabajo.

mi opinion es que para saber como descompilar un programa hay que entender primeramente como se genera el ejecutable.

y mas alla de la teoria basica de compiladores como se genera el exe del lenguaje y version del programa dado.


en conclusion: "Tarea muy ardua pero no imposible"

y tal ves poco etica...
__________________
ing. frankmch
Responder Con Cita
  #8  
Antiguo 21-10-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 24
kinobi Va por buen camino
Hola,

Cita:
Posteado originalmente por frankmch
en conclusion: "Tarea muy ardua pero no imposible"
Bien, estoy de acuerdo. Al fin y al cabo todo lo que puede ser pensado puede ser realizado, al menos de forma teórica.

Ahora bien, el conjunto de variables que intervienen eleva la complejidad del problema a un punto que no resulta práctico abordarlo. Salvando las distancias, ¿es posible obtener energía de la fusión nuclear?. Sí, pero a costa de invertir mucha más energía en el proceso de la que obtenemos como resultado. Conclusión: La fusión nuclear no es (actualmente) un medio válido (práctico) para obtener energía.

Cita:
Posteado originalmente por frankmch
y tal ves poco etica...
Yo no le veo problemas éticos a la ingeniería inversa. En todo caso a los usos que se haga con los resultados que se obtienen de ella.

Saludos.
Responder Con Cita
  #9  
Antiguo 30-11-2006
icaruss icaruss is offline
Registrado
 
Registrado: nov 2006
Posts: 1
Poder: 0
icaruss Va por buen camino
vean esto

http://es.wikipedia.org/wiki/ITER

lei hace un par de años un estudio cientifico publicado en la revista muy interesante en donde se explicaba la energia generada y consumida y los beneficios , etc. un proyecto anterior llamado JET requeria de cantidades gigantescas de combustible para generar energia termonuclear , pero en la revista que lei decia que el iter generaba algo asi como 10000 veces mas energia de la que consumia y que una vez andando se alimenta a asi mismo.

asi es que eso de que no se controla la energia termonuclear no es cierto , en cuanto a lo de la decompilacion seguro que si se puede , bastaria con un pequeño programado basado en redes neurales que analizara el problema , primero extrayendo los recursos y luego como dicen ahi que sustituye los eventos por ASM pues analizar en ASM y generar codigo , claro esta que no seria el codigo original , por la sencilla razon de que hay muchas maneras de programar lo mismo , nustro decompilador buscaria cualquier manera de hacer lo mismo que hace el ASM pero con codigo delphi , alfinal tendriamos un codigo delphi que haria lo mismo que el programa ensamblado solo que seguramente seria diferente del codigo original utilizado.
Responder Con Cita
  #10  
Antiguo 01-12-2006
Avatar de DTAR
DTAR DTAR is offline
Miembro
 
Registrado: nov 2005
Posts: 53
Poder: 19
DTAR Va por buen camino
buen tema...

ami mi profesor de Arquitectura de Computadoras de segundo año de la facu me dijo que no es posible por el tema de las variables que son direcciones de memoria y que despues enves de traer variables un decompilador traeria direcciones... pero todo eso no viene al caso... si te sirve, miralo....

http://delphi.about.com/od/devutilit...ompiling_3.htm
__________________
|DTAR|
Responder Con Cita
  #11  
Antiguo 15-03-2007
rydem rydem is offline
Registrado
 
Registrado: mar 2007
Posts: 4
Poder: 0
rydem Va por buen camino
Como ya te han dicho

Obtener el código es prácticamente imposible por las siguientes razones, si tu creas un ejecutable a partir de un lenguaje X, lo que haces realmente es convertir las instrucciones de alto nivel a lenguaje máquina, en este punto puede ser reversible, pero si después de ello optimizas código, generalmente eliminado código inútil o repetido, se destruye el ensamblado original, a menos que recuperes el código original antes de optimizar no debería ser reversible, de lo contrario nunca llegaras al código fuente original, los exe se construyen con una cabecera bien definida(fácil de buscar y conocer, diferente para los sistemas operativos), luego viene el código fuente de ensamblador convertido a Hexagesimal, y al final ne recuerdo si lleva otra cabecera, pero no es complejo, de hecho yo he pensado compilar mis propios programas en asm y crear los exes yo mismo, según he mirado no es muy complicado.

Y creeme, eso de obtener 10 000 veces más energía de la suministrada es mentira, si fuera posible obtener tan solo 2veces la energía que uno consume para generarla, obtendrías energía para vivir eternamente, no haría falta ninguna otra fuente de energía, y según dijo alguien que no recuerdo, la energía ni se crea ni se destruye, se transforma, creo que es el principio de conservación de la energía, lo que significa que para obtener 2 Unidades de energías debes convertirlas de otro tipo de energía, sin incluir las perdidas que siempre se tienen en los procesos, fricción, resistencia, o sea, siempre salimos perdiendo.

Última edición por rydem fecha: 15-03-2007 a las 18:06:28.
Responder Con Cita
  #12  
Antiguo 15-03-2007
Robert01 Robert01 is offline
Miembro
 
Registrado: feb 2006
Ubicación: Córdoba, Argentina
Posts: 895
Poder: 19
Robert01 Va por buen camino
en este sitio hay información sobre descompiladores. Ellos habían hecho uno que descompilaba cualquier programa y daba el código en c según me parece.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 04:41:03.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi