Package ghidra.app.util.bin.format.mz
Class DOSHeader
- java.lang.Object
-
- ghidra.app.util.bin.format.mz.DOSHeader
-
- All Implemented Interfaces:
Writeable
,StructConverter
public class DOSHeader extends java.lang.Object implements StructConverter, Writeable
This class represents theIMAGE_DOS_HEADER
struct as defined inwinnt.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
Fields Modifier and Type Field Description static int
IMAGE_DOS_SIGNATURE
static java.lang.String
NAME
The name to use when converting into a structure data type.static int
SIZEOF_DOS_HEADER
-
Constructor Summary
Constructors Constructor Description DOSHeader()
DO NOT USE THIS CONSTRUCTOR, USE create*(GenericFactory ...) FACTORY METHODS INSTEAD.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static DOSHeader
createDOSHeader(FactoryBundledWithBinaryReader reader)
Constructs a new DOS header.void
decrementStub(int start)
short
e_cblp()
Returns the number of bytes on the last page of file.short
e_cp()
Returns the number of pages in the file.short
e_cparhdr()
Returns the size of header in paragraphs.short
e_crlc()
Returns the number of relocations.short
e_cs()
Returns the initial (relative) CS value.short
e_csum()
Returns the checksum.short
e_ip()
Returns the initial IP value.int
e_lfanew()
Returns the file address of new EXE header.short
e_lfarlc()
Returns the file address of relocation table.short
e_magic()
Returns the magic number.short
e_maxalloc()
Returns the maximum extra paragraphs needed.short
e_minalloc()
Returns the minimum extra paragraphs needed.short
e_oemid()
Returns the OEM identifier (for e_oeminfo).short
e_oeminfo()
Returns the OEM information; e_oemid specific.short
e_ovno()
Returns the overlay number.short[]
e_res()
Returns the reserved words.short[]
e_res2()
Returns the reserved words (2).short
e_sp()
Returns the initial SP value.short
e_ss()
Returns the initial (relative) SS value.java.lang.String
getProcessorName()
Returns the processor name.int
getProgramLen()
Returns the length (in bytes) of the DOS program.boolean
hasNewExeHeader()
Returns true if a new EXE header exists.boolean
hasPeHeader()
Returns true if a PE header exists.boolean
isDosSignature()
Returns true if the DOS magic number is correctDataType
toDataType()
Returns a structure datatype representing the contents of the implementor of this interface.void
write(java.io.RandomAccessFile raf, DataConverter dc)
Writes this object to the specified random access file using the data converter to handle endianness.
-
-
-
Field Detail
-
NAME
public static final java.lang.String NAME
The name to use when converting into a structure data type.- See Also:
- Constant Field Values
-
IMAGE_DOS_SIGNATURE
public static final int IMAGE_DOS_SIGNATURE
- See Also:
- Constant Field Values
-
SIZEOF_DOS_HEADER
public static final int SIZEOF_DOS_HEADER
- See Also:
- Constant Field Values
-
-
Method Detail
-
createDOSHeader
public static DOSHeader createDOSHeader(FactoryBundledWithBinaryReader reader) throws java.io.IOException
Constructs a new DOS header.- Parameters:
reader
- the binary reader- Throws:
java.io.IOException
-
getProcessorName
public java.lang.String getProcessorName()
Returns the processor name.- Returns:
- the processor name
-
e_magic
public short e_magic()
Returns the magic number.- Returns:
- the magic number
-
e_cblp
public short e_cblp()
Returns the number of bytes on the last page of file.- Returns:
- the number of bytes on the last page of the file
-
e_cp
public short e_cp()
Returns the number of pages in the file.- Returns:
- the number of pages in the file
-
e_crlc
public short e_crlc()
Returns the number of relocations.- Returns:
- the number of relocations
-
e_cparhdr
public short e_cparhdr()
Returns the size of header in paragraphs.- Returns:
- the size of header in paragraphs
-
e_minalloc
public short e_minalloc()
Returns the minimum extra paragraphs needed.- Returns:
- the minimum extra paragraphs needed
-
e_maxalloc
public short e_maxalloc()
Returns the maximum extra paragraphs needed.- Returns:
- the maximum extra paragraphs needed
-
e_ss
public short e_ss()
Returns the initial (relative) SS value.- Returns:
- the initial (relative) SS value
-
e_sp
public short e_sp()
Returns the initial SP value.- Returns:
- the initial SP value
-
e_csum
public short e_csum()
Returns the checksum.- Returns:
- the checksum
-
e_ip
public short e_ip()
Returns the initial IP value.- Returns:
- the initial IP value
-
e_cs
public short e_cs()
Returns the initial (relative) CS value.- Returns:
- the initial (relative) CS value
-
e_lfarlc
public short e_lfarlc()
Returns the file address of relocation table.- Returns:
- the file address of relocation table
-
e_ovno
public short e_ovno()
Returns the overlay number.- Returns:
- the overlay number
-
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.- Returns:
- true if a new EXE header exists
-
hasPeHeader
public boolean hasPeHeader()
Returns true if a PE header exists.- Returns:
- true if a PE header exists
-
isDosSignature
public boolean isDosSignature()
Returns true if the DOS magic number is correct- Returns:
- true if the DOS magic number is correct
-
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 interfaceStructConverter
- Returns:
- returns a structure datatype representing the implementor of this interface
- Throws:
DuplicateNameException
- when a datatype of the same name already exists- See Also:
StructConverter.toDataType()
-
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)
-
decrementStub
public void decrementStub(int start)
-
write
public void write(java.io.RandomAccessFile raf, DataConverter dc) throws java.io.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 interfaceWriteable
- Parameters:
raf
- the random access filedc
- the data converter- Throws:
java.io.IOException
- if an I/O error occurs- See Also:
Writeable.write(java.io.RandomAccessFile, ghidra.util.DataConverter)
-
-