memory.helpers module¶
Provides helper classes/functions for memory functionality.
-
class
memory.helpers.
Array
(manager, is_ptr, type_name, ptr, length=None)[source]¶ Bases:
memory.helpers.BasePointer
Wrap an array.
-
__init__
(manager, is_ptr, type_name, ptr, length=None)[source]¶ Initialize the array wrapper.
Parameters: - manager (TypeManager) – The manager that should be used to retrieve classes.
- is_ptr (bool) – Set to True if the array contains pointers.
- type_name (str) – The name of the array type. E.g. ‘Vector’ or ‘bool’.
- ptr (Pointer) – The base address of the array (the very first array entry).
- length (int|None) – Length of the array. Setting this value allows you to iterate over the array.
-
-
class
memory.helpers.
Key
[source]¶ Bases:
object
Holds some constants and provides converters for parse_data().
-
static
as_args_tuple
(manager, value)[source]¶ Convert a string into a tuple containing <DataType> elements.
-
static
as_bool
(manager, value)[source]¶ Convert a string to a boolean.
Raises a ValueError if the string doesn’t represent such a value.
-
static
as_identifier
(manager, value)[source]¶ Convert a string into a byte string.
If no spaces in the string, the string itself will be returned.
-
static
as_return_type
(manager, value)[source]¶ Convert a string into a <Return> object.
If the conversion fails, the string itself will be returned.
-
ACCESSOR
= 'accessor'¶
-
ACCESSOR_OFFSET
= 'accessor_offset'¶
-
ARGS
= 'arguments'¶
-
BINARY
= 'binary'¶
-
CONVENTION
= 'convention'¶
-
DOC
= 'doc'¶
-
IDENTIFIER
= 'identifier'¶
-
LENGTH
= 'length'¶
-
LEVEL
= 'level'¶
-
OFFSET
= 'offset'¶
-
RETURN_TYPE
= 'return_type'¶
-
SIZE
= 'size'¶
-
SRV_CHECK
= 'srv_check'¶
-
TYPE_NAME
= 'type'¶
-
static
-
class
memory.helpers.
MemberFunction
(manager, return_type, func, this)[source]¶ Bases:
_memory.Function
Use this class to create a wrapper for member functions.
It passes the this pointer automatically to the wrapped function.
-
class
memory.helpers.
Type
[source]¶ Bases:
object
Stores attribute/array types.
-
BOOL
= 'bool'¶
-
CHAR
= 'char'¶
-
DOUBLE
= 'double'¶
-
FLOAT
= 'float'¶
-
INT
= 'int'¶
-
LONG
= 'long'¶
-
LONG_LONG
= 'long_long'¶
-
POINTER
= 'pointer'¶
-
SHORT
= 'short'¶
-
STRING_ARRAY
= 'string_array'¶
-
STRING_POINTER
= 'string_pointer'¶
-
UCHAR
= 'uchar'¶
-
UINT
= 'uint'¶
-
ULONG
= 'ulong'¶
-
ULONG_LONG
= 'ulong_long'¶
-
USHORT
= 'ushort'¶
-
-
memory.helpers.
parse_data
(manager, raw_data, keys)[source]¶ Parse the data dictionary.
Parses by converting the values of the given keys into the proper type or assigning them default values. Raises a KeyError if a key does not exist and if no default value is available.
Returns a generator: (<name>, [<value of key0>, <value of key1>, ...])
<keys> must have the following structure: ((<key name>, <converter>, <default value>), ...)
The convert function must accept 2 arguments:
- An instance of the TypeManager class
- The value to convert
Information about data that comes from a file:
You can specialize every key by adding ‘’_windows’’ (for Windows) or ‘’_linux’’ (for Linux) to the end a key.
For example: If you are using a signature on Windows, but a symbol on Linux, you have three possibilities to do that:
1. identifier_windows = <signature for Windows> identifier = <symbol for Linux>
2. identifier = <signature for Windows> identifier_linux = <symbol for Linux>
3. identifier_windows = <signature for Windows> identifier_linux = <symbol for Linux>