From Wikipedia, the free encyclopedia
EXE este extensia comună pentru fișierele ce reprezintă un executabil (un program), folosită în sistemele de operare DOS, OpenVMS, Microsoft Windows, Symbian și OS/2. În afară de programele executabile, multe fișiere EXE conțin componente numite resurse, cum ar fi imagini bitmap și pictograme (iconițe) pe care programul executabil le folosește pentru interfața grafică.
Fișierul EXE se folosește pentru sistemele de operare MS-DOS, Microsoft Windows, OpenVMS, Symbian și OS/2. Este succesorul fișierului COM, care putea atingea mărimea maximă de 64 KB și de aceea a conținut doar un segment de cod.
În afară de cod executabil, un fisier EXE poate conține și alte componente numite resurse, ca de exemplu:
Există câteva tipuri de formate de fișiere EXE
Headerul este format din blocuri de 512 B si paragrafe de 16 B
Offset (hex) | Descriere |
---|---|
00-01 | 0x4d, 0x5a. Acesta este "numărul magic" al unui executabil. |
02-03 | Numărul de octeți in bloc. Dacă valoarea este 0 atunci tot blocul este ocupat (valoarea efectiva este 512) |
04-05 | Numărul de blocuri din executabil. Daca 02-03 este diferit de 0 atunci numai atât din ultimul bloc este ocupat. |
06-07 | Numărul de intrari relocate după header. Poate fi 0 |
08-09 | Numărul de paragrafe din header. |
0A-0B | Numărul de paragrafe suplimentare de care are nevoie executabilul. Aceasta este echivalentul marimii BSS din Unix |
0C-0D | Numărul maxim de paragrafe aditionale. |
0E-0F | Valoarea relativă a segmentului de stivă. Aceasta este adăugată degmentului la care ruleaza executabilul, și rezultatul este folosit pentru a inițializa registrul SS . |
10-11 | Valoarea inițială a registrului SP . |
12-13 | checksum-ul unui cuvânt |
14-15 | Valoarea inițiala a registrului IP |
16-17 | Valoarea inițiala a registrului CS |
18-19 | Offset-ul primei relocații |
1A-1B | Numărul de acoperire. De obicei 0 semnificând ca este programul principal |
O structură reprezentând head-erul unui executabil pe 16 biți:
struct EXE {
unsigned short signature; /* == 0x5a4D */
unsigned short bytes_in_last_block;
unsigned short blocks_in_file;
unsigned short num_relocs;
unsigned short header_paragraphs;
unsigned short min_extra_paragraphs;
unsigned short max_extra_paragraphs;
unsigned short ss;
unsigned short sp;
unsigned short checksum;
unsigned short ip;
unsigned short cs;
unsigned short reloc_table_offset;
unsigned short overlay_number;
};
struct EXE_RELOC {
unsigned short offset;
unsigned short segment;
};
Offset-ul de la inceputul executabilului se calculeaza astfel:
exe_data_start = exe.header_paragraphs * 16L;
Offset-ul bit-ului după datele din executabil se calculează astfel:
extra_data_start = exe.blocks_in_file * 512L;
if (exe.bytes_in_last_block)
extra_data_start -= (512 - exe.bytes_in_last_block);
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.