EXE Header Info
Get .exe file header info
AI
AI Summary: This codebase represents a historical implementation of the logic described in the metadata. Our preservation engine analyzes the structure to provide context for modern developers.
Source Code
#include <stdio.h>
struct EXEHEAD
{
char id[2]; // 'M' & 'Z'
unsigned lastpg; // no of bytes on last page
unsigned size; // total no of 512 byte pages
unsigned reloc; // no of relocation table items
unsigned headersize; // header size in paras
unsigned minpara; // min. paras reqd. by prog.
unsigned maxpara; // max. paras reqd. by prog.
unsigned stackseg; // initial value of stack seg.
unsigned stackoff; // initial value of SP
unsigned chksum; // header check sum
unsigned IP; // entry point IP
unsigned CS; // entry point CS
unsigned relocoff; // offset of 1st relocation item
unsigned char overlay; // overlay number
};
int main(int argc, char *argv[])
{
FILE *fp;
struct EXEHEAD exehead;
if((fp = fopen(argv[1], "rb")) == NULL)
{
printf("ERROR: file open error: %s\n", argv[1]);
return 1;
}
fread(&exehead, sizeof(exehead), 1, fp);
printf("EXE file signature: %c%c\n", exehead.id[0], exehead.id[1]);
printf("Total bytes on last sectors: %u\n", exehead.lastpg);
printf("Total sectors(1 sector = 512 bytes): %u\n", exehead.size);
printf("No. of relocation table items: %u\n", exehead.reloc);
printf("Header size in paragraphs: %u\n", exehead.headersize);
printf("Min. paras. reqd. by program: %u\n", exehead.minpara);
printf("Max. paras. reqd. by program: %u\n", exehead.maxpara);
printf("Initial value of SS: %u\n", exehead.stackseg);
printf("Initial value of SP: %u\n", exehead.stackoff);
printf("Header checksum: %u\n", exehead.chksum);
printf("Initial value of IP: %u\n", exehead.IP);
printf("Initial value of CS: %u\n", exehead.CS);
printf("Offset of 1st relocation item: %u\n", exehead.relocoff);
printf("Overlay number: %d\n", exehead.overlay);
return 0;
}
Upload
Original Comments (3)
Recovered from Wayback Machine