Trees | Indices | Help |
|
---|
|
The basic building block for constructing an address resolver plugin. An address resolver maintains a collection of Modules and abstracts access to specific symbol names within the modules. Rekall uses a symbolic notation to refer to specific addresses within the address space. The address resolver is responsible for parsing this notation and resolving it to an actual address. Rules of symbol syntax ====================== The address space is divided into "modules". A module has a name, a start address and an end address. Modules can also contain a profile which knows about symbols related to that module. 1. Module reference: The start address of a module can be refered to by its name. e.g: "nt", "ntdll", "tcpip". 2. If a module contains a valid profile, the profile may also know about symbols within the module. We can refer to these symbols. e.g. "nt!MmGetIoSessionState" 3. If an exact symbol is not found, it can be referred to with an offset from another symbol name. e.g. "nt!MmGetIoSessionState+5FE" (Note integers are given in hex). 4. If the symbol is preceeded with a "*" - it means that the symbol is a pointer. The address will be read as a pointer and the symbol name will resolve to the address of the pointer's target.
Instance Methods | |||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
Inherited from |
Class Variables | |
table_header =
|
|
name =
hash(x) |
|
ADDRESS_NAME_REGEX = re.compile(r'
|
Properties | |
Inherited from |
Method Details |
x.__init__(...) initializes x; see help(type(x)) for signature
|
Finds the module containing the specified address. Returns: A Module() instance. |
Instantiate the named constant with these args. This method is the main entry point for instantiating constants. It is preferred than calling the profile's method of the same name directly since it will be responsible with loading the right profile. |
Format the address as a symbol name. This means to try and find the containing module, the symbol within the module or possibly an offset from a known symbol. e.g. nt!PspCidTable nt!PspCidTable + 0x10 nt + 0x234 Returns a list of symbol names for the address. The list is empty if the address is not in a containing module if the nearest known symbol is farther than max_distance away. |
Searches for a known symbol at an address lower than this. Returns a tuple (nearest_offset, list of symbol names). |
Searches symbols for the pattern. pattern may contain wild cards (*). Note that currently a module name is required. Example pattern: nt!Ps* |
Class Variable Details |
table_header
|
ADDRESS_NAME_REGEX
|
Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0.1 on Mon Oct 9 03:28:01 2017 | http://epydoc.sourceforge.net |