Formatul Windows Portable Executable are propriile sale mici nuanțe, așa că iată un ghid rapid despre cum funcționează.
Un Windows Portable Executable (PE) este formatul de fișier Windows nativ pentru executabile și alte tipuri de fișiere binare. Formatul de fișier PE este conceput pentru a fi independent de platformă, astfel încât poate fi utilizat pe orice computer Windows rulează aceeași versiune de sistem de operare și arhitectură de procesor pentru care a fost fișierul compilate.
Deci, să analizăm formatul de fișier Windows PE și să aflăm despre structura și componentele sale constitutive.
Ce este un fișier executabil portabil Windows?
Înainte de a explora formatul Windows Portable Executable, este important să clarificați elementele de bază. Să facem un pas înapoi și să învățăm despre conceptul de bază al Windows PE—COFF.
Când compilați codul sursă într-un program, compilatorul generează un fișier obiect (.obj). Acest fișier obiect conține instrucțiuni pentru computer în format binar.
COFF sau Common Object File Format este un set standardizat de convenții pentru reprezentarea instrucțiunilor binare. COFF ajută la menținerea compatibilității între platforme, deoarece toate formatele de fișiere COFF urmează același set de reguli și convenții pentru organizarea codului și a datelor. Deși COFF a fost dezvoltat inițial pentru a fi utilizat pe sisteme *NIX, acum este omniprezent pe toate platformele.
Formatul de fișier Windows Portable Executable (PE) este o modificare a COFF și a fost dezvoltat pentru a fi utilizat exclusiv pe Sisteme Windows pe 32 și 64 de biți. Spre deosebire de COFF, care oferă un format standardizat pentru fișierele obiect, Windows PE oferă un format standardizat pentru fișierele executabile și bibliotecă.
Conține secțiuni și anteturi care oferă informații despre executabilul în cauză și ajută încărcătorul de sistem să gestioneze datele legate de executabil. Antetele dintr-un fișier PE ajută încărcătorul de sistem să mapeze fișierul în memorie, să rezolve dependențe precum exporturile/importurile API, să gestioneze resursele și să pregătească fișierul pentru execuție.
Linux are, de asemenea, propria sa iterație a COFF; se numește Executable Link File sau, pe scurt, ELF binar. Puteți verifica dacă un fișier este ELF sau nu rulând programul comanda fisierului pe Linux cu numele fișierului ca prim argument.
Structura unui executabil portabil Windows
Formatul de fișier Portable Executable este format din mai multe componente, fiecare având un scop specific. Aceste componente includ:
- Antetele secțiunilor, care descriu aspectul și caracteristicile fiecărei secțiuni a fișierului. Secțiunile în sine, care conțin cod executabil, date și resurse.
- Antetul PE, care oferă informații despre structura și cerințele generale ale fișierului.
- Antetul DOS, care include un mic program care rulează atunci când fișierul este executat pe un sistem DOS.
- Și, în sfârșit, anteturile secțiunii PE, care descriu locația și atributele fiecărei secțiuni în fișier.
În general, aceste componente lucrează împreună pentru a crea un format structurat care permite sistemului de operare să încarce, să execute și să gestioneze corect codul executabil conținut în fișier. Să aflăm exact ce face fiecare componentă.
Antet DOS
Prima parte a unui fișier PE se numește antet DOS. O cantitate mică de cod executabil este stocată în antetul DOS, care poate fi rulat și pe o mașină DOS.
Acest cod este numit și stub MS-DOS și este folosit pentru a trimite un mesaj de eroare pe sistemele care nu acceptă fișierul PE.
Antet PE
Antetul Portable Executable oferă informații despre executabil, cum ar fi cât de mare este fișierul, unde se află diferitele părți și ce resurse are nevoie de executabil. Antetul PE conține, de asemenea, informații despre tipul de executabil, indiferent dacă este un Fișier Windows .DLL sau un .EXE.
Antete de secțiune
Secțiunile sunt implementate pentru a organiza numeroasele componente ale unui executabil, cum ar fi codul, datele și resursele precum șiruri de text, imagini etc. Antetele secțiunilor includ informații cu privire la dimensiunea și locația fiecărei secțiuni, precum și orice steaguri asociate.
Indicatoarele asociate cu fiecare antet de secțiune pot indica diferite atribute ale secțiunii, cum ar fi dacă este executabilă, inscriptabilă sau citibilă. Aceste steaguri ajută sistemul de operare să încarce și să gestioneze corect conținutul fiecărei secțiuni în timpul execuției programului.
Secțiuni
Secțiunile în sine cuprind codul real, datele și resursele executabilului. Fiecare segment este aliniat la o anumită limită de memorie și are propriul set de atribute care afectează modul în care sistemul de operare îl gestionează.
Acum știți totul despre Windows Portable Executable File Format
Windows Portable Executable este un format de fișier robust și versatil utilizat pentru a produce o mare varietate de aplicații Windows și componente de sistem. Înțelegând structura formatului de fișier PE, dezvoltatorii pot construi aplicații eficiente care profită de caracteristicile distinctive ale Windows.
Pe lângă faptul că obțineți o înțelegere aprofundată a platformei pe care va rula aplicația dvs., urmând câteva standarde bune practici de codificare, veți putea maximiza calitatea aplicației, indiferent de platforma pe care o rulează pe.