Please visit our sponsor
UNKNOWN
//**************************************
//INCLUDE files for :EXE Header Info
//**************************************
stdio.h
//**************************************
// Name: EXE Header Info
// Description:Get .exe file header info
// By: Shoots AndLadders
//
//
// Inputs:a File to read header of.
//
// Returns:outputs header info
//
//Assumes:None
//
//Side Effects:none
//This code is copyrighted and has limited warranties.
//Please see http://www.Planet-Source-Code.com/xq/ASP/txtCodeId.830/lngWId.3/qx/vb/scripts/ShowCode.htm
//for details.
//**************************************
#include
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;
}