Package ghidra.app.util.bin.format.pe
Class BaseRelocation
java.lang.Object
ghidra.app.util.bin.format.pe.BaseRelocation
- All Implemented Interfaces:
ByteArrayConverter
,StructConverter
A class to represent the
IMAGE_BASE_RELOCATION
data structure defined in winnt.h
.
typedef struct _IMAGE_BASE_RELOCATION { DWORD VirtualAddress; DWORD SizeOfBlock; // WORD TypeOffset[1]; } IMAGE_BASE_RELOCATION; typedef IMAGE_BASE_RELOCATION UNALIGNED * PIMAGE_BASE_RELOCATION;
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
The size of theIMAGE_BASE_RELOCATION
in bytes.static final String
The name to use when converting into a structure data type.static final String[]
Names of the available base relocations. -
Method Summary
Modifier and TypeMethodDescriptionvoid
addRelocation
(int type, int offset) Adds a relocation to this base relocation block.int
getCount()
Returns the number of relocation in this block.int
getOffset
(int index) Returns the lower 12 bits of the offset.int
Returns the size (in bytes) of this relocation block.int
getType
(int index) Returns the upper 4 bits of the offset.int
Returns the base address of the relocations in this block.byte[]
toBytes
(DataConverter dc) Returns a byte array representing this implementor of this interface.Returns a structure datatype representing the contents of the implementor of this interface.
-
Field Details
-
NAME
The name to use when converting into a structure data type.- See Also:
-
IMAGE_SIZEOF_BASE_RELOCATION
public static final int IMAGE_SIZEOF_BASE_RELOCATIONThe size of theIMAGE_BASE_RELOCATION
in bytes.- See Also:
-
IMAGE_REL_BASED_NOOP
public static final int IMAGE_REL_BASED_NOOP- See Also:
-
IMAGE_REL_BASED_ABSOLUTE
public static final int IMAGE_REL_BASED_ABSOLUTE- See Also:
-
IMAGE_REL_BASED_HIGH
public static final int IMAGE_REL_BASED_HIGH- See Also:
-
IMAGE_REL_BASED_LOW
public static final int IMAGE_REL_BASED_LOW- See Also:
-
IMAGE_REL_BASED_HIGHLOW
public static final int IMAGE_REL_BASED_HIGHLOW- See Also:
-
IMAGE_REL_BASED_HIGHADJ
public static final int IMAGE_REL_BASED_HIGHADJ- See Also:
-
IMAGE_REL_BASED_MIPS_JMPADDR
public static final int IMAGE_REL_BASED_MIPS_JMPADDR- See Also:
-
IMAGE_REL_BASED_SECTION
public static final int IMAGE_REL_BASED_SECTION- See Also:
-
IMAGE_REL_BASED_REL32
public static final int IMAGE_REL_BASED_REL32- See Also:
-
IMAGE_REL_BASED_MIPS_JMPADDR16
public static final int IMAGE_REL_BASED_MIPS_JMPADDR16- See Also:
-
IMAGE_REL_BASED_IA64_IMM64
public static final int IMAGE_REL_BASED_IA64_IMM64- See Also:
-
IMAGE_REL_BASED_DIR64
public static final int IMAGE_REL_BASED_DIR64- See Also:
-
IMAGE_REL_BASED_HIGH3ADJ
public static final int IMAGE_REL_BASED_HIGH3ADJ- See Also:
-
TYPE_STRINGS
Names of the available base relocations.
-
-
Method Details
-
addRelocation
public void addRelocation(int type, int offset) Adds a relocation to this base relocation block.- Parameters:
type
- the relocation typeoffset
- the relocation offset
-
getVirtualAddress
public int getVirtualAddress()Returns the base address of the relocations in this block.- Returns:
- the base address of the relocations in this block
-
getSizeOfBlock
public int getSizeOfBlock()Returns the size (in bytes) of this relocation block.- Returns:
- the size (in bytes) of this relocation block
-
getCount
public int getCount()Returns the number of relocation in this block.- Returns:
- the number of relocation in this block
-
getOffset
public int getOffset(int index) Returns the lower 12 bits of the offset.- Parameters:
index
- the ith relocation- Returns:
- int the offset of the relocation
-
getType
public int getType(int index) Returns the upper 4 bits of the offset.- Parameters:
index
- the ith relocation- Returns:
- int the type of the relocation ,
-
toDataType
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:
-
toBytes
Description copied from interface:ByteArrayConverter
Returns a byte array representing this implementor of this interface.- Specified by:
toBytes
in interfaceByteArrayConverter
- Parameters:
dc
- the data converter to use- Returns:
- a byte array representing this object
-