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 pe programare, uneori, vin peste o întrebare de genul: „Am un program de compilat în Delphi Cum pot obține 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 acest moment, Borland nu oferă nici un software care poate decompila fișierele executabile (.exe) sau module de Delphi-compilate (.dcu) în codul sursă (.pas).
Dacă încă decis să încerce să separe un fișier executabil, trebuie să știți următoarele lucruri. Codul sursă în Delphi sunt, de obicei stocate în două tipuri de fișiere: sursă de sine, în ASCII și fișierele de resurse (.RES RC DFM ... dcr) (.pas DPR.). Fișierele Dfm stochează proprietățile obiectelor conținute în formular. Când creați .txt finală, Delphi copiază informații din fișierele .dfm. De fiecare dată când ne schimba coordonatele formei, descrieri ale butoanelor sau evenimente conexe, Delphi scrie aceste modificări pentru a .dfm (cu excepția codului procedură. Acesta este stocat în Pas fișierele / DCU). Și, în sfârșit, pentru a ajunge la fișierul .dfm decompilării, trebuie să știți - ce tipuri de resurse sunt stocate în interiorul Win32 executabil.
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 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: