Tema: Pe Explorer
Ver Mensaje Individual
  #3  
Antiguo 14-03-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.435
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por nachete
...alguine sabe como hacerlo o algun programa que me decomprima un ejecutable y pueda ver el codigo fuente entero
Para un programa compilado y linkado (como los que genera Delphi) es imposible extraer el código fuente tal y como se progamó, porque no se encuentra en el programa. En su lugar está el código de "bajo nivel" que lo sustituye, y hasta ahora no es posible generar código de "alto nivel" a partir de código de "bajo nivel" .
Puedes extraer del ejecutable "casi todo" lo que no sea código, eso si, desde imágenes, cadenas, recursos, menús, formularios,... etc, etc, etc,
Lo dicho, lo más que vas a obtener "decompilando" el programa es código similar a éste:

Traducción del código:

Código Delphi [-]
 var
   Direct:string;
   op:TSelectDirOpts;
 begin
   SelectDirectory('Seleccionar directorio', 'c:\', direct);
   Edit1.Text := Direct;
   SelectDirectory(Direct, [], 0);

Te puedes entretener un rato, es bastante instructivo...

Código:
 00466310   55					 push	ebp
 00466311   8BEC				   mov	 ebp, esp
 00466313   83C4F0				 add	 esp, -$10
 00466316   33C9				   xor	 ecx, ecx
 00466318   894DF8				 mov	 [ebp-$08], ecx
 0046631B   8955F4				 mov	 [ebp-$0C], edx
 0046631E   8945FC				 mov	 [ebp-$04], eax
 00466321   33C0				   xor	 eax, eax
 00466323   55					 push	ebp
 
 * Possible String Reference to: 'é«Úùÿëð‹å]Ã'
 |
 00466324   6878634600			 push	$00466378
 
 ***** TRY
 |
 00466329   64FF30				 push	dword ptr fs:[eax]
 0046632C   648920				 mov	 fs:[eax], esp
 0046632F   8D4DF8				 lea	 ecx, [ebp-$08]
 00466332   BA88634600			 mov	 edx, $00466388
 
 * Possible String Reference to: 'Seleccionar directorio'
 |
 00466337   B898634600			 mov	 eax, $00466398
 
 |
 0046633C   E8CFF7FFFF			 call	00465B10
 00466341   8B55F8				 mov	 edx, [ebp-$08]
 
 * Reference to Form1
 |
 00466344   8B45FC				 mov	 eax, [ebp-$04]
 
 * Reference to control TForm1.Edit1 : TEdit
 |
 00466347   8B80F4020000		   mov	 eax, [eax+$02F4]
 
 * Reference to: controls.TControl.SetText(TControl;System.String);
 |
 0046634D   E83E93FDFF			 call	0043F690
 00466352   8D45F8				 lea	 eax, [ebp-$08]
 00466355   33C9				   xor	 ecx, ecx
 00466357   8A15B0634600		   mov	 dl, byte ptr [$4663B0]
 
 * Reference to: filectrl.SelectDirectory(System.AnsiString;TSelectDirOpts;System.Longint):System.Boolean;overload;
 |
 0046635D   E89EF5FFFF			 call	00465900
 00466362   33C0				   xor	 eax, eax
 00466364   5A					 pop	 edx
 00466365   59					 pop	 ecx
 00466366   59					 pop	 ecx
 00466367   648910				 mov	 fs:[eax], edx
 
 ****** FINALLY
 |
 
 * Possible String Reference to: '‹å]Ã'
 |
 0046636A   687F634600			 push	$0046637F
 0046636F   8D45F8				 lea	 eax, [ebp-$08]
 
 |
 00466372   E889E0F9FF			 call	00404400
 00466377   C3					 ret
 
 00466378   E9ABDAF9FF			 jmp	 00403E28
 0046637D   EBF0				   jmp	 0046636F
 
 ****** END
 |
 0046637F   8BE5				   mov	 esp, ebp
 00466381   5D					 pop	 ebp
 00466382   C3					 ret
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita