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 <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; }