Trees | Indices | Help |
|
---|
|
Generate a profile index file based on an index specification. The index specification is currently a yaml file with the following structure: ``` base_symbol: (string) # OPTIONAL Compute ALL offsets as relative to this symbol. This includes MaxOffset and MinOffset. symbols: (array of dicts) # A list of symbols to index. - name: (string) # Symbol name data: (string) # Data that should be at the symbol's offset shift: (int) # OPTIONAL Adjust symbol offset by this number ``` ## Example: ``` path: win32k.sys symbols: - # The name of the symbol we test for. name: "??_C@_1BO@KLKIFHLC@?$AAG?$AAU?$AAI?$AAF?$AAo?$AAn?$AAt?$AA?4?$AAH?$AAe?$AAi?$AAg?$AAh?$AAt?$AA?$AA@" # The data we expect to find at that offset. data: "47005500490046006f006e0074002e00480065006900670068007400" - name: "wcschr" shift: -1 data: "90" ``` The result is an index profile. This has an $INDEX section which is a dict, with keys being the profile name, and values being a list of (offset, match) tuples. For example: ``` { "$INDEX": { "tcpip.sys/AMD64/6.0.6001.18000/0C1A1EC1D61E4508A33F5212FC1B37202": [[1184600, "495053656344656c657465496e626f756e644f7574626f756e64536150616972"]], "tcpip.sys/AMD64/6.0.6001.18493/29A4DBCAF840463298F40190DD1492D02": [[1190376, "495053656344656c657465496e626f756e644f7574626f756e64536150616972"]], "tcpip.sys/AMD64/6.0.6002.18272/7E79532FC7E349C690F5FBD16E3562172": [[1194296, "495053656344656c657465496e626f756e644f7574626f756e64536150616972"]], ... "$METADATA": { "ProfileClass": "Index", "Type": "Profile" "MaxOffset": 546567 "MinOffset": 0 } } ```
Nested Classes | |
__metaclass__ Automatic Plugin Registration through metaclasses. (Inherited from rekall.plugin.Command) |
|
top_level_class A command can be run from the rekall command line. (Inherited from rekall.plugin.Command) |
Instance Methods | |||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
Inherited from |
Class Methods | |||
|
|||
|
|||
|
|||
|
|||
|
|||
|
Class Variables | |
classes =
(Inherited from rekall.plugin.Command)
|
|
classes_by_name =
(Inherited from rekall.plugin.Command)
|
|
error_status = None hash(x) (Inherited from rekall.plugin.Command) |
|
interactive = False
(Inherited from rekall.plugin.Command)
|
|
mode = None hash(x) (Inherited from rekall.plugin.Command) |
|
plugin_feature =
(Inherited from rekall.plugin.Command)
|
|
producer = False
(Inherited from rekall.plugin.Command)
|
Properties | |
name (Inherited from rekall.plugin.Command) | |
Inherited from |
Method Details |
Declare the command line args this plugin needs.
|
The constructor for this command. Commands can take arbitrary named args and have access to the running session. Args: session: The session we will use. Many options are taken from the session by default, if not provided. This allows users to omit specifying many options. ignore_required: If this is true plugin constructors must allow the plugin to be instantiated with no parameters. All parameter validation shall be disabled and construction must succeed.
|
Check the index for collisions. An index collision occurs when all the comparison points in one GUID are also contained in another GUID. If these points match it is impossible to distinguish between the two indexes. We need to issue a warning so the user can add additional comparison points to resolve the ambiguity. |
Builds a data index from the specification. A data index is an index which collates known data at known offsets in memory. We then apply the index to a memory location to discover the most likely match there. |
Builds a Struct index from specification. A Struct index is a collection of struct offsets for certain members over all available versions. |
Builds an index to identify profiles based on their symbols-offsets. The index stores traits for each profile. A trait is a combination of 1 or more symbol-offset pairs that uniquely identify it within the current profile repository. The code handles:
|
Produce results on the renderer given. Each plugin should implement this method to produce output on the renderer. The framework will initialize the plugin and provide it with some kind of renderer to write output on. The plugin should not assume that the renderer is actually TextRenderer, only that the methods defined in the BaseRenderer exist. Args: renderer: A renderer based at rekall.ui.renderer.BaseRenderer.
|
|
|
Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0.1 on Mon Oct 9 03:28:59 2017 | http://epydoc.sourceforge.net |