Package ghidra.app.util.bin.format.mz
Class DOSHeader
java.lang.Object
ghidra.app.util.bin.format.mz.OldDOSHeader
ghidra.app.util.bin.format.mz.DOSHeader
- All Implemented Interfaces:
Writeable,StructConverter
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 Summary
FieldsModifier and TypeFieldDescriptionstatic final StringThe name to use when converting into a structure data type.static final intFields inherited from class ghidra.app.util.bin.format.mz.OldDOSHeader
IMAGE_DOS_SIGNATURE, reader -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoiddecrementStub(int start) inte_lfanew()Returns the file address of new EXE header.shorte_oemid()Returns the OEM identifier (for e_oeminfo).shortReturns the OEM information; e_oemid specific.short[]e_res()Returns the reserved words.short[]e_res2()Returns the reserved words (2).getName()Helper to override the value of nameintReturns the length (in bytes) of the DOS program.booleanReturns true if a new EXE header exists.booleanReturns true if a PE header exists.protected voidparse()Returns a structure datatype representing the contents of the implementor of this interface.voidwrite(RandomAccessFile raf, DataConverter dc) Writes this object to the specified random access file using the data converter to handle endianness.Methods inherited from class ghidra.app.util.bin.format.mz.OldDOSHeader
e_cblp, e_cp, e_cparhdr, e_crlc, e_cs, e_csum, e_ip, e_lfarlc, e_magic, e_maxalloc, e_minalloc, e_ovno, e_sp, e_ss, getProcessorName, isDosSignature
-
Field Details
-
NAME
The name to use when converting into a structure data type.- See Also:
-
SIZEOF_DOS_HEADER
public static final int SIZEOF_DOS_HEADER- See Also:
-
-
Constructor Details
-
DOSHeader
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:
hasNewExeHeaderin classOldDOSHeader- Returns:
- true if a new EXE header exists
-
hasPeHeader
public boolean hasPeHeader()Returns true if a PE header exists.- Overrides:
hasPeHeaderin classOldDOSHeader- Returns:
- true if a PE header exists
-
toDataType
Description copied from interface:StructConverterReturns 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:
toDataTypein interfaceStructConverter- Overrides:
toDataTypein classOldDOSHeader- 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
Helper to override the value of name- Overrides:
getNamein classOldDOSHeader- 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
- Overrides:
parsein classOldDOSHeader- Throws:
IOException
-
decrementStub
public void decrementStub(int start) -
write
Description copied from interface:WriteableWrites this object to the specified random access file using the data converter to handle endianness.- Specified by:
writein interfaceWriteable- Overrides:
writein classOldDOSHeader- Parameters:
raf- the random access filedc- the data converter- Throws:
IOException- if an I/O error occurs- See Also:
-