Class DOSHeader

java.lang.Object
ghidra.app.util.bin.format.mz.OldDOSHeader
ghidra.app.util.bin.format.mz.DOSHeader
All Implemented Interfaces:
Writeable, StructConverter

public class DOSHeader extends OldDOSHeader
This class represents the IMAGE_DOS_HEADER struct as defined in winnt.h.
 typedef struct _IMAGE_DOS_HEADER {      // DOS .EXE header
     WORD   e_magic;                     // Magic number                                                                // MANDATORY
     WORD   e_cblp;                      // Bytes on last page of file
     WORD   e_cp;                        // Pages in file
     WORD   e_crlc;                      // Relocations
     WORD   e_cparhdr;                   // Size of header in paragraphs
     WORD   e_minalloc;                  // Minimum extra paragraphs needed
     WORD   e_maxalloc;                  // Maximum extra paragraphs needed
     WORD   e_ss;                        // Initial (relative) SS value
     WORD   e_sp;                        // Initial SP value
     WORD   e_csum;                      // Checksum
     WORD   e_ip;                        // Initial IP value
     WORD   e_cs;                        // Initial (relative) CS value
     WORD   e_lfarlc;                    // File address of relocation table
     WORD   e_ovno;                      // Overlay number
     WORD   e_res[4];                    // Reserved words
     WORD   e_oemid;                     // OEM identifier (for e_oeminfo)
     WORD   e_oeminfo;                   // OEM information; e_oemid specific
     WORD   e_res2[10];                  // Reserved words                                                      // MANDATORY
     LONG   e_lfanew;                    // File address of new exe header
 } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;
 
  • Field Details

  • Constructor Details

    • DOSHeader

      public DOSHeader(BinaryReader reader) throws IOException
      Constructs a new DOS header.
      Parameters:
      reader - the binary reader
      Throws:
      IOException - if there was an IO-related error
  • Method Details

    • e_res

      public short[] e_res()
      Returns the reserved words.
      Returns:
      the reserved words
    • e_oemid

      public short e_oemid()
      Returns the OEM identifier (for e_oeminfo).
      Returns:
      the OEM identifier (for e_oeminfo)
    • e_oeminfo

      public short e_oeminfo()
      Returns the OEM information; e_oemid specific.
      Returns:
      the OEM information; e_oemid specific
    • e_res2

      public short[] e_res2()
      Returns the reserved words (2).
      Returns:
      the reserved words (2)
    • e_lfanew

      public int e_lfanew()
      Returns the file address of new EXE header.
      Returns:
      the file address of new EXE header
    • hasNewExeHeader

      public boolean hasNewExeHeader()
      Returns true if a new EXE header exists.
      Overrides:
      hasNewExeHeader in class OldDOSHeader
      Returns:
      true if a new EXE header exists
    • hasPeHeader

      public boolean hasPeHeader()
      Returns true if a PE header exists.
      Overrides:
      hasPeHeader in class OldDOSHeader
      Returns:
      true if a PE header exists
    • toDataType

      public DataType toDataType() throws DuplicateNameException
      Description copied from interface: StructConverter
      Returns a structure datatype representing the contents of the implementor of this interface.

      For example, given:

       class A {
           int foo;
           double bar;
       }
       

      The return value should be a structure data type with two data type components; an INT and a DOUBLE. The structure should contain field names and, if possible, field comments.

      Specified by:
      toDataType in interface StructConverter
      Overrides:
      toDataType in class OldDOSHeader
      Returns:
      returns a structure datatype representing the implementor of this interface
      Throws:
      DuplicateNameException - when a datatype of the same name already exists
      See Also:
    • getName

      public String getName()
      Helper to override the value of name
      Overrides:
      getName in class OldDOSHeader
      Returns:
      The name of the header
    • getProgramLen

      public int getProgramLen()
      Returns the length (in bytes) of the DOS program.

      In other words: e_lfanew() - SIZEOF_DOS_HEADER

      Returns:
      the length (in bytes)
    • parse

      protected void parse() throws IOException
      Overrides:
      parse in class OldDOSHeader
      Throws:
      IOException
    • decrementStub

      public void decrementStub(int start)
    • write

      public void write(RandomAccessFile raf, DataConverter dc) throws IOException
      Description copied from interface: Writeable
      Writes this object to the specified random access file using the data converter to handle endianness.
      Specified by:
      write in interface Writeable
      Overrides:
      write in class OldDOSHeader
      Parameters:
      raf - the random access file
      dc - the data converter
      Throws:
      IOException - if an I/O error occurs
      See Also: