EXE
From Wikipedia, the free encyclopedia
Remove ads
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ă.

Remove ads
Descriere
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:
- imagini (de obicei in format bitmap)
- pictograma programului (icon)
- alte fișiere utilizate la interfața grafică
Remove ads
Tipuri de executabile
Există câteva tipuri de formate de fișiere EXE
DOS
- executabile DOS MZ 16 biți - sunt fișierele executabile originale și pot fi identificate de prezența literelor MZ (numite număr magic) la începutul fișierului ASCII
- executabile DOS 16 biți - Tip de executabile mai nou decât cele DOS MZ, care au fost introduse odată cu multitasking-ul în MS-DOS 4.0. Acest tip poate fi identificat de numărul magic NE în fișierul ASCII. Acestea nu sunt foarte populare datorită faptului ca nu pot fi rulate de alte versiuni de DOS, doar de sistemul de operare Windows pe 32 de biți și unele versiuni de OS/2.
OS/2
Windows
- 32-bit Portable Executable - Introduse odată cu Windows NT, sunt mult mai complexe și contin PE în ASCII (însa nu la început; la început apare MZ). Poate fi rulat de orice versiune de Windows NT și chiar și de către Windows 95 și mai mult.
- 64-bit Portable Executable - Introduse odată cu versiunea de 64 de biți a sistemului de operare Windows. Acest tip poate fi rulat doar pe unele tipuri de procesoare: x86-64 și IA-64.
Remove ads
Structură unui EXE
Headerul este format din blocuri de 512 B si paragrafe de 16 B
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;
};
Calcularea Offset-ului
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);
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads