Enforce proper requirements on Module objects.

This commit is contained in:
Mike Auty
2024-03-24 15:09:34 +00:00
parent 55dd39f2ba
commit 634e7d52b5
2 changed files with 19 additions and 1 deletions
@@ -14,6 +14,7 @@ import logging
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 @@ class Module(interfaces.context.ModuleInterface):
# 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,
+4 -1
View File
@@ -157,6 +157,10 @@ class ModuleInterface(interfaces.configuration.ConfigurableInterface):
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 @@ class ModuleInterface(interfaces.configuration.ConfigurableInterface):
def build_configuration(self) -> "interfaces.configuration.HierarchicalDict":
"""Builds the configuration dictionary for this specific Module"""
config = super().build_configuration()
config["offset"] = self.config["offset"]