Fiica de doi ani a programatorului cere mamei:
- Este adevărat că programele după dezinstalare cad în cer, pe un server imens care nu se blochează niciodată? Mama răspunde cu gînduri:
- Dacă serverul tău nu se blochează niciodată, probabil că nu te-ai compila.
Citind forumurile de programare, uneori întâlniți o întrebare precum: "Am un program compilat pe Delphi, cum obțin codul sursă?". De obicei, o astfel de întrebare apare când programatorul a pierdut fișiere de proiect și a rămas doar .exe. De obicei, nu este posibilă restaurarea completă a codului sursă într-un limbaj de nivel înalt. Acest lucru înseamnă că și alții nu vor putea restabili codul sursă al programului dvs. Hmm. și da și nu.
În primul rând, voi spune imediat că este imposibil să restabiliți codul sursă exact așa cum a fost imposibil, deoarece nu există un astfel de decompilator în lume care ar putea crea acest lucru.
Când se aplică decompilarea. Există multe motive pentru acest lucru. Iată câteva dintre ele:
- Restaurați codul sursă;
- Transferați aplicația pe o altă platformă;
- Identificați prezența virușilor în codul programului sau codul rău intenționat;
- Corectarea erorilor în program, în cazul în care creatorul aplicației nu va face acest lucru :)
În prezent, Borland nu furnizează niciun produs software capabil să decomprime fișiere executabile (.exe) sau module Delphi (.dcu) compilate în cod sursă (.pas).
Dacă totuși ați decis să încercați să decompilați executabilul, atunci trebuie să știți următoarele lucruri. Codul sursă pentru Delphi este de obicei stocat în două tipuri de fișiere: sursa însăși în codare ASCII (.pas. Dpr) și fișiere de resurse (.res .Rc .Dfm.Dcr). Fișierele Dfm stochează proprietățile obiectelor conținute în formular. Când se creează fișierul .exe final, Delphi copiază informațiile din fișierele .dfm în el. De fiecare dată când modificăm coordonatele formei, descrierile butoanelor sau evenimentele asociate, Delphi scrie aceste modificări în .dfm (cu excepția codului procedurii, care este stocat în fișierele pas / dcu). În cele din urmă, pentru a obține un fișier .dfm în timpul decompilației, trebuie să știți ce tipuri de resurse sunt stocate în executabilul Win32.
Toate programele compilate în Delphi au următoarele secțiuni: CODE, DATE, BSS. idata, tls. rdata. Rsrc. Cel mai important pentru decompilarea secțiunilor CODE și .rsrc. Articolul "Adăugarea de funcționalități la un program Delphi" conține câteva informații interesante despre formatele Delphi executabile, precum și informații despre clasele și resursele DFM. În acest articol există un punct interesant sub titlul: "Cum să adăugați dispozitivul de tratare a evenimentului într-un fișier deja compilat, de exemplu, pentru a schimba textul de pe buton".
Dintre numeroasele tipuri de resurse stocate în fișierul .exe, RT_RCDATA este de interes, care stochează informațiile care erau în fișierul DFM înainte de difuzare. Pentru a extrage datele DFM dintr-un fișier .exe, putem apela API-ul prin funcția EnumResourceNames.
Arta decompilării a fost, în mod tradițional, o mulțime de maeștri care sunt familiarizați cu asamblorul și cu debuggerii. Unele decompilatoare Delphi dau impresia că oricine, chiar și cu cunoștințe tehnice limitate, poate schimba majoritatea executabililor Delphi după voință.
În cele din urmă, dacă sunteți interesat de decompilare, atunci vă sugerez câteva decompilatoare Delphi: