Package ghidra.app.util.bin.format.pe
Class DataDirectory
java.lang.Object
ghidra.app.util.bin.format.pe.DataDirectory
- All Implemented Interfaces:
PeMarkupable,StructConverter
- 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
FieldsModifier and TypeFieldDescriptionprotected booleanstatic final byteThe size of the data directory, in bytes.protected NTHeaderprotected BinaryReaderprotected intprotected static final StringThe name to use when converting into a structure data type.protected int -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidcreateDirectoryBookmark(Program program, Address addr) protected booleancreateFragment(Program program, String fragmentName, Address start, Address end) Creates a fragment with the given name (if it does not already exist).protected voidcreateTerminatedString(Program program, Address addr, boolean label, MessageLog log) abstract StringintintgetSize()Returns the size of this data directory.intReturns the relative virtual address of this data directory.booleanabstract booleanparse()Parses this data directory.protected voidprocessDataDirectory(NTHeader ntHeader, BinaryReader reader) protected voidsetBookmark(Program prog, Address addr, String comment) protected voidsetEolComment(Program prog, Address addr, String comment) protected voidsetPlateComment(Program prog, Address addr, String comment) protected voidsetPreComment(Program prog, Address addr, String comment) voidsetSize(int size) Sets the size of this data directory.voidsetVirtualAddress(int addr) Sets the relative virtual address of this data directory.abstract DataTypeThis method should return a datatype representing the data stored in this directory.toString()protected longva(long va, boolean isBinary) voidwriteBytes(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, waitMethods 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
-
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). Move the address range into the fragment. Note: the end address is not inclusive! -
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
-
toDataType
This method should return a datatype representing the data stored in this directory.- 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 existsIOException- See Also:
-
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()
-