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_HEADERstruct 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 intIMAGE_DOS_SIGNATUREstatic java.lang.StringNAMEThe name to use when converting into a structure data type.static intSIZEOF_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 DOSHeadercreateDOSHeader(FactoryBundledWithBinaryReader reader)Constructs a new DOS header.voiddecrementStub(int start)shorte_cblp()Returns the number of bytes on the last page of file.shorte_cp()Returns the number of pages in the file.shorte_cparhdr()Returns the size of header in paragraphs.shorte_crlc()Returns the number of relocations.shorte_cs()Returns the initial (relative) CS value.shorte_csum()Returns the checksum.shorte_ip()Returns the initial IP value.inte_lfanew()Returns the file address of new EXE header.shorte_lfarlc()Returns the file address of relocation table.shorte_magic()Returns the magic number.shorte_maxalloc()Returns the maximum extra paragraphs needed.shorte_minalloc()Returns the minimum extra paragraphs needed.shorte_oemid()Returns the OEM identifier (for e_oeminfo).shorte_oeminfo()Returns the OEM information; e_oemid specific.shorte_ovno()Returns the overlay number.short[]e_res()Returns the reserved words.short[]e_res2()Returns the reserved words (2).shorte_sp()Returns the initial SP value.shorte_ss()Returns the initial (relative) SS value.java.lang.StringgetProcessorName()Returns the processor name.intgetProgramLen()Returns the length (in bytes) of the DOS program.booleanhasNewExeHeader()Returns true if a new EXE header exists.booleanisDosSignature()Returns true if the DOS magic number is correctDataTypetoDataType()Returns a structure datatype representing the contents of the implementor of this interface.voidwrite(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
-
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: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- 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.IOExceptionDescription copied from interface:WriteableWrites this object to the specified random access file using the data converter to handle endianness.- Specified by:
writein 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)
-
-