diff --git a/volatility3/framework/contexts/__init__.py b/volatility3/framework/contexts/__init__.py index 73868a58f3..d1a5c871a7 100644 --- a/volatility3/framework/contexts/__init__.py +++ b/volatility3/framework/contexts/__init__.py @@ -14,6 +14,7 @@ from typing import Callable, Iterable, List, Optional, Set, Tuple, Union from volatility3.framework import constants, interfaces, symbols, exceptions +from volatility3.framework.configuration import requirements from volatility3.framework.objects import templates vollog = logging.getLogger(__name__) @@ -226,6 +227,20 @@ def create( # Add the module to the context modules collection return return_val + @classmethod + def get_requirements(cls) -> List[interfaces.configuration.RequirementInterface]: + """Returns a list of Requirement objects for this type of layer.""" + return [ + requirements.IntRequirement(name="offset", optional=False), + requirements.TranslationLayerRequirement(name="layer_name", optional=False), + requirements.TranslationLayerRequirement( + name="native_layer_name", optional=True + ), + requirements.SymbolTableRequirement( + name="symbol_table_name", optional=False + ), + ] + def object( self, object_type: str, diff --git a/volatility3/framework/interfaces/context.py b/volatility3/framework/interfaces/context.py index a95f2b4646..3847ffb592 100644 --- a/volatility3/framework/interfaces/context.py +++ b/volatility3/framework/interfaces/context.py @@ -157,6 +157,10 @@ def __init__(self, context: ContextInterface, config_path: str, name: str) -> No super().__init__(context, config_path) self._module_name = name + @classmethod + def get_requirements(cls) -> List[interfaces.configuration.RequirementInterface]: + """Returns a list of Requirement objects for this type of layer.""" + @property def _layer_name(self) -> str: return self.config["layer_name"] @@ -175,7 +179,6 @@ def _symbol_table_name(self) -> str: def build_configuration(self) -> "interfaces.configuration.HierarchicalDict": """Builds the configuration dictionary for this specific Module""" - config = super().build_configuration() config["offset"] = self.config["offset"]