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
Modifier and TypeFieldDescriptionstatic final String
The name to use when converting into a structure data type.static final int
Fields inherited from class ghidra.app.util.bin.format.mz.OldDOSHeader
IMAGE_DOS_SIGNATURE, reader
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
decrementStub
(int start) int
e_lfanew()
Returns the file address of new EXE header.short
e_oemid()
Returns the OEM identifier (for e_oeminfo).short
Returns 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 nameint
Returns the length (in bytes) of the DOS program.boolean
Returns true if a new EXE header exists.boolean
Returns true if a PE header exists.protected void
parse()
Returns a structure datatype representing the contents of the implementor of this interface.void
write
(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:
hasNewExeHeader
in classOldDOSHeader
- Returns:
- true if a new EXE header exists
-
hasPeHeader
public boolean hasPeHeader()Returns true if a PE header exists.- Overrides:
hasPeHeader
in classOldDOSHeader
- Returns:
- true if a PE header exists
-
toDataType
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 interfaceStructConverter
- Overrides:
toDataType
in 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:
getName
in 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:
parse
in classOldDOSHeader
- Throws:
IOException
-
decrementStub
public void decrementStub(int start) -
write
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 interfaceWriteable
- Overrides:
write
in classOldDOSHeader
- Parameters:
raf
- the random access filedc
- the data converter- Throws:
IOException
- if an I/O error occurs- See Also:
-