{ Program : EXE Header Info Programer : FARZAD BADILI (FDB@bigfoot.com) http://www.inernettrash.com/users/fdb/ } uses crt,dos; procedure WriteHexWord(w: Word); const hexChars: array [0..$F] of Char = '0123456789ABCDEF'; begin Write(hexChars[Hi(w) shr 4], hexChars[Hi(w) and $F], hexChars[Lo(w) shr 4], hexChars[Lo(w) and $F]); Writeln; end; TYPE ExeHeader = record EXEID , File_length_mod_2 , File_length_div_2 , Number_of_Segment_adresses , Header_size , Minimum_Number_of_paragraphs , Maximum_Number_of_paragraphs , Stack_segment_displacement , sp_register_contents , Checksum , ip_register_contents , Start_of_code_segment , Relocation_table , Overlay_number : word; END; VAR exefile : ExeHeader; efile : string; f : file; rr : word; begin CLRSCR; write ('File: '); readln (efile); assign (f,efile); reset (f,1); IF Filesize(f) < 2 THEN begin erase (f); halt; end; blockread (f,exefile,sizeof(exefile),rr); close(f); CLRSCR; with exefile do begin Write('EXEID: ' );WriteHexWord(EXEID) ; Write('File_length_mod_2: ' );WriteHexWord(File_length_mod_2 ); Write('File_length_div_2: ' );WriteHexWord(File_length_div_2 ); Write('Number_of_Segment_adresses: ' );WriteHexWord(Number_of_Segment_adresses ); Write('Header_size: ' );WriteHexWord(Header_size ); Write('Minimum_Number_of_paragraphs: ' );WriteHexWord(Minimum_Number_of_paragraphs ); Write('Maximum_Number_of_paragraphs: ' );WriteHexWord(Maximum_Number_of_paragraphs ); Write('Stack_segment_displacement: ' );WriteHexWord(Stack_segment_displacement ); Write('sp_register_contents: ' );WriteHexWord(sp_register_contents); Write('Checksum: ' );WriteHexWord(Checksum); Write('ip_register_contents: ' );WriteHexWord(ip_register_contents ); Write('Start_of_code_segment: ' );WriteHexWord(Start_of_code_segment ); Write('Relocation_table: ' );WriteHexWord(Relocation_table ); Write('Overlay_number: ' );WriteHexWord(Overlay_number); end; delay(60); End.