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
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) and moves the address range into the fragment.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 nt, BinaryReader rdr) 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.toString()protected longva(long va, boolean isBinary) protected booleanvoidwriteBytes(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
-
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()
-