Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Pe Explorer (https://www.clubdelphi.com/foros/showthread.php?t=19412)

nachete 14-03-2005 10:35:44

Pe Explorer
 
Me he bajado el pe explorer y veo todo el programa, el problema esta en que no puedo modificar los eventos porque ni siquiera salen, alguine sabe como hacerlo o algun programa que me decomprima un ejecutable y pueda ver el codigo fuente entero

Lepe 14-03-2005 13:51:45

Descomprimir?, mas bien será descompilar, pero de todas formas no se puede. Como mucho podrás sacar "algo" del programa original.

Ten en cuenta que hoy en dia los compiladores son enormes, las decisiones que toman son innumerables y es casi imposible tenerlas en cuenta para deshacerlas. Además está el Linkador, que también hace su trabajo.

Un saludo.

Neftali [Germán.Estévez] 14-03-2005 14:10:21

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" :D.
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


Lepe 14-03-2005 16:18:57

Cita:

Empezado por Neftali
Te puedes entretener un rato, es bastante instructivo...

Tengo que ejercitar mi lectura rápida, entendí "intuitivo" :D

Saludos


La franja horaria es GMT +2. Ahora son las 19:54:49.

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