Package ghidra.app.util.bin.format.pe
Class DataDirectory
java.lang.Object
ghidra.app.util.bin.format.pe.DataDirectory
- All Implemented Interfaces:
PeMarkupable
- Direct Known Subclasses:
ArchitectureDataDirectory
,BaseRelocationDataDirectory
,BoundImportDataDirectory
,CliMetadataDirectory
,COMDescriptorDataDirectory
,DebugDataDirectory
,DefaultDataDirectory
,DelayImportDataDirectory
,ExceptionDataDirectory
,ExportDataDirectory
,GlobalPointerDataDirectory
,ImportAddressTableDataDirectory
,ImportDataDirectory
,LoadConfigDataDirectory
,ResourceDataDirectory
,SecurityDataDirectory
,TLSDataDirectory
An abstract base class to represent the
IMAGE_DATA_DIRECTORY
data structure defined in winnt.h
.
typedef struct _IMAGE_DATA_DIRECTORY { DWORD VirtualAddress; DWORD Size; } IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY; {
-
Field Summary
Modifier and TypeFieldDescriptionprotected boolean
static final byte
The size of the data directory, in bytes.protected NTHeader
protected BinaryReader
protected int
protected static final String
The name to use when converting into a structure data type.protected int
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
createDirectoryBookmark
(Program program, Address addr) protected boolean
createFragment
(Program program, String fragmentName, Address start, Address end) Creates a fragment with the given name (if it does not already exist) and moves the address range into the fragment.protected void
createTerminatedString
(Program program, Address addr, boolean label, MessageLog log) abstract String
int
int
getSize()
Returns the size of this data directory.int
Returns the relative virtual address of this data directory.boolean
abstract boolean
parse()
Parses this data directory.protected void
processDataDirectory
(NTHeader nt, BinaryReader rdr) protected void
setBookmark
(Program prog, Address addr, String comment) protected void
setEolComment
(Program prog, Address addr, String comment) protected void
setPlateComment
(Program prog, Address addr, String comment) protected void
setPreComment
(Program prog, Address addr, String comment) void
setSize
(int size) Sets the size of this data directory.void
setVirtualAddress
(int addr) Sets the relative virtual address of this data directory.toString()
protected long
va
(long va, boolean isBinary) protected boolean
void
writeBytes
(RandomAccessFile raf, DataConverter dc, PortableExecutable template) Directories that are not contained inside of sections should override this method to write their bytes into the specified file.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface ghidra.app.util.bin.format.pe.PeMarkupable
markup
-
Field Details
-
TITLE
The name to use when converting into a structure data type.- See Also:
-
IMAGE_SIZEOF_IMAGE_DIRECTORY_ENTRY
public static final byte IMAGE_SIZEOF_IMAGE_DIRECTORY_ENTRYThe size of the data directory, in bytes.- See Also:
-
ntHeader
-
reader
-
virtualAddress
protected int virtualAddress -
size
protected int size -
hasParsed
protected boolean hasParsed
-
-
Constructor Details
-
DataDirectory
public DataDirectory()
-
-
Method Details
-
processDataDirectory
- Throws:
IOException
-
validateSize
protected boolean validateSize() -
getDirectoryName
-
parse
Parses this data directory.- Returns:
- True if parsing completed successfully; otherwise, false.
- Throws:
IOException
- If there was an IO problem while parsing.
-
va
protected long va(long va, boolean isBinary) -
createTerminatedString
-
createDirectoryBookmark
-
setBookmark
-
setPlateComment
-
setEolComment
-
setPreComment
-
createFragment
Creates a fragment with the given name (if it does not already exist) and moves the address range into the fragment.Note: the end address is not inclusive!
- Parameters:
program
- The programfragmentName
- The fragment namestart
- The start addressend
- The end address- Returns:
- True on success; otherwise, false
-
getVirtualAddress
public int getVirtualAddress()Returns the relative virtual address of this data directory.- Returns:
- the relative virtual address of this data directory
-
setVirtualAddress
public void setVirtualAddress(int addr) Sets the relative virtual address of this data directory.- Parameters:
addr
- the new relative virtual address
-
getSize
public int getSize()Returns the size of this data directory.- Returns:
- the size of this data directory
-
setSize
public void setSize(int size) Sets the size of this data directory.- Parameters:
size
- the new size of this data directory
-
toString
-
writeBytes
public void writeBytes(RandomAccessFile raf, DataConverter dc, PortableExecutable template) throws IOException Directories that are not contained inside of sections should override this method to write their bytes into the specified file.- Parameters:
raf
- the random access file used for outputdc
- the data converter for endiannesstemplate
- the original unadulterated PE- Throws:
IOException
- if an I/O error occurs
-
hasParsedCorrectly
public boolean hasParsedCorrectly() -
getPointer
public int getPointer()
-