mate_common.models.integration module¶
- class mate_common.models.integration.Addr(va: pydantic.types.PositiveInt)¶
Bases:
objectA binary address.
- Parameters
va (pydantic.types.PositiveInt) –
- Return type
None
- va: pydantic.types.PositiveInt¶
- class mate_common.models.integration.Assertion(location: mate_common.models.integration.Addr, constraint: List[mate_common.models.integration.Constraint] = <factory>)¶
Bases:
objectAssertions are used to add constraints during the execution of a program.
These constraints only apply to symbolic values and must be true _after_ the execution of the location.
- Parameters
location (mate_common.models.integration.Addr) –
constraint (List[mate_common.models.integration.Constraint]) –
- Return type
None
- constraint: List[mate_common.models.integration.Constraint]¶
- location: mate_common.models.integration.Addr¶
- class mate_common.models.integration.ConcreteHeapOOBOptions(fast: bool = True, detector: Literal[<Detector.ConcreteHeapOOB: 'ConcreteHeapOOB'>] = Detector.ConcreteHeapOOB)¶
Bases:
mate_common.models.integration.DetectorOptionsBaseA testing detector that creates a case for every OOB access in the heap.
- Parameters
fast (bool) –
detector (Literal[<Detector.ConcreteHeapOOB: 'ConcreteHeapOOB'>]) –
- Return type
None
- detector: Literal[<Detector.ConcreteHeapOOB: 'ConcreteHeapOOB'>] = 'ConcreteHeapOOB'¶
- class mate_common.models.integration.Constraint(expr: str, id: List[mate_common.models.integration.SMTIdentifier] = <factory>)¶
Bases:
objectConstraint to apply to identifier.
- Parameters
expr (str) –
id (List[mate_common.models.integration.SMTIdentifier]) –
- Return type
None
- expr: str¶
- class mate_common.models.integration.Decl(name: str, value: str, expr: str)¶
Bases:
objectAn initial declaration for symbolic variables.
- Parameters
name (str) –
value (str) –
expr (str) –
- Return type
None
- expr: str¶
- name: str¶
- value: str¶
- class mate_common.models.integration.DetectAllPathsOptions(fast: bool = True, detector: Literal[<Detector.DetectAllPaths: 'DetectAllPaths'>] = Detector.DetectAllPaths)¶
Bases:
mate_common.models.integration.DetectorOptionsBaseA testing detector that fires when each state terminates.
- Parameters
fast (bool) –
detector (Literal[<Detector.DetectAllPaths: 'DetectAllPaths'>]) –
- Return type
None
- detector: Literal[<Detector.DetectAllPaths: 'DetectAllPaths'>] = 'DetectAllPaths'¶
- class mate_common.models.integration.Detector(value)¶
Bases:
str,enum.EnumSupported detectors for Manticore.
See the
dwarfcoremodule for more info.- ConcreteHeapOOB = 'ConcreteHeapOOB'¶
- DetectAllPaths = 'DetectAllPaths'¶
- UnderconstrainedOOB = 'UnderconstrainedOOB'¶
- UninitializedVar = 'UninitializedVariable'¶
- UseAfterFree = 'UseAfterFree'¶
- VariableBoundsAccess = 'VariableBoundsAccess'¶
- class mate_common.models.integration.DetectorOptionsBase(fast: bool = True)¶
Bases:
objectCommon fields for detector options.
- Parameters
fast (bool) –
- Return type
None
- fast: bool = True¶
- class mate_common.models.integration.ExplorationTree(state_id: int, cases: List[mate_common.models.integration.ReachingTestCase] = <factory>, choices: List[Tuple[str, int]] = <factory>, children: List[mate_common.models.integration.ExplorationTree] = <factory>, error_msg: Optional[str] = None)¶
Bases:
objectA tree representing exploration choices and containing potential errors detected during program exploration.
- Parameters
state_id (int) –
cases (List[mate_common.models.integration.ReachingTestCase]) –
choices (List[Tuple[str, int]]) –
children (List[mate_common.models.integration.ExplorationTree]) –
error_msg (Optional[str]) –
- Return type
None
- add_state(parent_id: int, state_id: int, choice: Tuple[str, int]) bool¶
Add a state to the exploration tree.
Return true on success
- Parameters
parent_id (int) –
state_id (int) –
choice (Tuple[str, int]) –
- Return type
bool
- cases: List[mate_common.models.integration.ReachingTestCase]¶
- children: List[mate_common.models.integration.ExplorationTree]¶
- choices: List[Tuple[str, int]]¶
- error_msg: Optional[str] = None¶
- get_state(state_id: int) Optional[mate_common.models.integration.ExplorationTree]¶
Get a state in the exploration tree.
- Parameters
state_id (int) –
- Return type
- iter_cases() Iterable[mate_common.models.integration.ReachingTestCase]¶
- Return type
- state_id: int¶
- class mate_common.models.integration.Explore(command_line_flags: List[str] = <factory>, concrete_start: str = '', stdin_size: Optional[int] = 256, env: Dict[str, str] = <factory>, detector_options: List[Union[mate_common.models.integration.DetectAllPathsOptions, mate_common.models.integration.VariableBoundsAccessOptions, mate_common.models.integration.UninitializedVarOptions, mate_common.models.integration.UseAfterFreeOptions, mate_common.models.integration.UnderconstrainedOOBOptions, mate_common.models.integration.ConcreteHeapOOBOptions]] = <factory>, timeout: Optional[int] = None)¶
Bases:
objectA message that will configure Manticore to explore with an optionally enabled detector without much direction.
- Parameters
command_line_flags (List[str]) –
concrete_start (str) –
stdin_size (Optional[int]) –
env (Dict[str, str]) –
detector_options (List[Union[mate_common.models.integration.DetectAllPathsOptions, mate_common.models.integration.VariableBoundsAccessOptions, mate_common.models.integration.UninitializedVarOptions, mate_common.models.integration.UseAfterFreeOptions, mate_common.models.integration.UnderconstrainedOOBOptions, mate_common.models.integration.ConcreteHeapOOBOptions]]) –
timeout (Optional[int]) –
- Return type
None
- command_line_flags: List[str]¶
- concrete_start: str = ''¶
- detector_options: List[Union[mate_common.models.integration.DetectAllPathsOptions, mate_common.models.integration.VariableBoundsAccessOptions, mate_common.models.integration.UninitializedVarOptions, mate_common.models.integration.UseAfterFreeOptions, mate_common.models.integration.UnderconstrainedOOBOptions, mate_common.models.integration.ConcreteHeapOOBOptions]]¶
- env: Dict[str, str]¶
- stdin_size: Optional[int] = 256¶
- timeout: Optional[int] = None¶
- class mate_common.models.integration.ExploreFunction(command_line_flags: List[str] = <factory>, concrete_start: str = '', stdin_size: Optional[int] = 256, env: Dict[str, str] = <factory>, detector_options: List[Union[mate_common.models.integration.DetectAllPathsOptions, mate_common.models.integration.VariableBoundsAccessOptions, mate_common.models.integration.UninitializedVarOptions, mate_common.models.integration.UseAfterFreeOptions, mate_common.models.integration.UnderconstrainedOOBOptions, mate_common.models.integration.ConcreteHeapOOBOptions]] = <factory>, timeout: Optional[int] = None, target_function: Optional[str] = None, input_constraints: Optional[List[str]] = None, primitive_ptr_policy: Optional[mate_common.models.integration.UnboundedPtrPolicy] = UnboundedPtrPolicy(policy_type=<UnboundedPtrPolicyType.DEFAULT: 'default'>, max_alternatives=3, custom_values=None), complex_ptr_policy: Optional[mate_common.models.integration.UnboundedPtrPolicy] = UnboundedPtrPolicy(policy_type=<UnboundedPtrPolicyType.DEFAULT: 'default'>, max_alternatives=3, custom_values=None))¶
Bases:
mate_common.models.integration.ExploreA message that configures Manticore to explore a single function using underconstrained symbolic execution.
- Parameters
command_line_flags (List[str]) –
concrete_start (str) –
stdin_size (Optional[int]) –
env (Dict[str, str]) –
detector_options (List[Union[mate_common.models.integration.DetectAllPathsOptions, mate_common.models.integration.VariableBoundsAccessOptions, mate_common.models.integration.UninitializedVarOptions, mate_common.models.integration.UseAfterFreeOptions, mate_common.models.integration.UnderconstrainedOOBOptions, mate_common.models.integration.ConcreteHeapOOBOptions]]) –
timeout (Optional[int]) –
target_function (Optional[str]) –
input_constraints (Optional[List[str]]) –
primitive_ptr_policy (Optional[mate_common.models.integration.UnboundedPtrPolicy]) –
complex_ptr_policy (Optional[mate_common.models.integration.UnboundedPtrPolicy]) –
- Return type
None
- complex_ptr_policy: Optional[mate_common.models.integration.UnboundedPtrPolicy] = UnboundedPtrPolicy(policy_type=<UnboundedPtrPolicyType.DEFAULT: 'default'>, max_alternatives=3, custom_values=None)¶
- input_constraints: Optional[List[str]] = None¶
- primitive_ptr_policy: Optional[mate_common.models.integration.UnboundedPtrPolicy] = UnboundedPtrPolicy(policy_type=<UnboundedPtrPolicyType.DEFAULT: 'default'>, max_alternatives=3, custom_values=None)¶
- target_function: Optional[str] = None¶
- class mate_common.models.integration.ExploreRet(path: str, exploration_tree: Optional[mate_common.models.integration.ExplorationTree] = None, cases: List[mate_common.models.integration.ReachingTestCase] = <factory>, warnings: List[str] = <factory>)¶
Bases:
objectResults message after processing of an
Exploremessage.- Parameters
path (str) –
exploration_tree (Optional[mate_common.models.integration.ExplorationTree]) –
cases (List[mate_common.models.integration.ReachingTestCase]) –
warnings (List[str]) –
- Return type
None
- cases: List[mate_common.models.integration.ReachingTestCase]¶
- exploration_tree: Optional[mate_common.models.integration.ExplorationTree] = None¶
- path: str¶
- warnings: List[str]¶
- class mate_common.models.integration.FreeUseInfo(use_file: str, use_line: int, free_file: str, free_line: int)¶
Bases:
objectUse and free filename(s) and line numbers for input into use after free detection.
- Parameters
use_file (str) –
use_line (int) –
free_file (str) –
free_line (int) –
- Return type
None
- free_file: str¶
- free_line: int¶
- use_file: str¶
- use_line: int¶
- class mate_common.models.integration.FunctionVariableInfo(function_name: str, variable_name: str)¶
Bases:
objectTargeted function and variable name for input to uninitialized stack-variable use detection.
- Parameters
function_name (str) –
variable_name (str) –
- Return type
None
- function_name: str¶
- variable_name: str¶
- class mate_common.models.integration.Model(python_code: str)¶
Bases:
objectReplacement Model for a piece of native code, like a function.
- Parameters
python_code (str) –
- Return type
None
- python_code: str¶
- class mate_common.models.integration.Reachability(command_line_flags: List[str] = <factory>, concrete_start: str = '', stdin_size: Optional[int] = 256, env: Dict[str, str] = <factory>, detector_options: List[Union[mate_common.models.integration.DetectAllPathsOptions, mate_common.models.integration.VariableBoundsAccessOptions, mate_common.models.integration.UninitializedVarOptions, mate_common.models.integration.UseAfterFreeOptions, mate_common.models.integration.UnderconstrainedOOBOptions, mate_common.models.integration.ConcreteHeapOOBOptions]] = <factory>, timeout: Optional[int] = None, waypoints: List[mate_common.models.integration.Waypoint] = <factory>, constraint_vars: List[mate_common.models.integration.Decl] = <factory>)¶
Bases:
mate_common.models.integration.ExploreReachability message is the top-level message that represents constraints for POIs.
- Parameters
command_line_flags (List[str]) –
concrete_start (str) –
stdin_size (Optional[int]) –
env (Dict[str, str]) –
detector_options (List[Union[mate_common.models.integration.DetectAllPathsOptions, mate_common.models.integration.VariableBoundsAccessOptions, mate_common.models.integration.UninitializedVarOptions, mate_common.models.integration.UseAfterFreeOptions, mate_common.models.integration.UnderconstrainedOOBOptions, mate_common.models.integration.ConcreteHeapOOBOptions]]) –
timeout (Optional[int]) –
waypoints (List[mate_common.models.integration.Waypoint]) –
constraint_vars (List[mate_common.models.integration.Decl]) –
- Return type
None
- constraint_vars: List[mate_common.models.integration.Decl]¶
- waypoints: List[mate_common.models.integration.Waypoint]¶
- class mate_common.models.integration.ReachabilityRet(path: str, exploration_tree: Optional[mate_common.models.integration.ExplorationTree] = None, cases: List[mate_common.models.integration.ReachingTestCase] = <factory>, warnings: List[str] = <factory>, success: bool = False)¶
Bases:
mate_common.models.integration.ExploreRetResults message after processing of the
Reachabilitymessage.- Parameters
path (str) –
exploration_tree (Optional[mate_common.models.integration.ExplorationTree]) –
cases (List[mate_common.models.integration.ReachingTestCase]) –
warnings (List[str]) –
success (bool) –
- Return type
None
- success: bool = False¶
- class mate_common.models.integration.ReachingInput(name: str, symbolic_values: List[mate_common.models.integration.ReachingValue] = <factory>)¶
Bases:
objectInformation about symbolic input that has reached a destination of importance within the program during execution.
Each input has an associated name in Manticore that gives some insight on its origin.
- Parameters
name (str) –
symbolic_values (List[mate_common.models.integration.ReachingValue]) –
- Return type
None
- name: str¶
- symbolic_values: List[mate_common.models.integration.ReachingValue]¶
- class mate_common.models.integration.ReachingTestCase(description: str, detector_triggered: Optional[mate_common.models.integration.Detector] = None, symbolic_inputs: List[mate_common.models.integration.ReachingInput] = <factory>)¶
Bases:
objectA summary of a set of inputs and description that have been saved for replay on a binary.
descriptionis human-readable free-form text that gives insight on what Manticore detected.- Parameters
description (str) –
detector_triggered (Optional[mate_common.models.integration.Detector]) –
symbolic_inputs (List[mate_common.models.integration.ReachingInput]) –
- Return type
None
- description: str¶
- detector_triggered: Optional[mate_common.models.integration.Detector] = None¶
- symbolic_inputs: List[mate_common.models.integration.ReachingInput]¶
- class mate_common.models.integration.ReachingValue(symbolic_value: str, concrete_value_base64: str)¶
Bases:
objectA symbolic representation of the reaching input and a single, concrete, base64-encoded value.
- Parameters
symbolic_value (str) –
concrete_value_base64 (str) –
- Return type
None
- concrete_value_base64: str¶
- symbolic_value: str¶
- class mate_common.models.integration.Register(value)¶
Bases:
str,enum.EnumRegisters for machine-code. Must match up with what appears in the binary.
NOTE: If there is a better way of normalizing the register names, we might not need this.
- RIP = 'RIP'¶
- class mate_common.models.integration.Replacement(location: mate_common.models.integration.Addr, model: mate_common.models.integration.Model)¶
Bases:
objectA replacement for a function call. A “replacement” will intercept control-flow to replace the logic at the specified location. If it will replace a function call, then the location should appear at the very first instruction within the function that is being replaced (to catch all calls). The model will then need to return control-flow back to the caller using standard calling convention rules.
NOTE: This has yet to be implemented or tested.
These are added _before_ the execution of location
- Parameters
location (mate_common.models.integration.Addr) –
model (mate_common.models.integration.Model) –
- Return type
None
- location: mate_common.models.integration.Addr¶
- class mate_common.models.integration.SMTIdentifier(identifier: Union[mate_common.models.integration.Register, str])¶
Bases:
objectIdentifier for SMT expressions.
- Parameters
identifier (Union[mate_common.models.integration.Register, str]) –
- Return type
None
- identifier: Union[mate_common.models.integration.Register, str]¶
- class mate_common.models.integration.Target(event: str, id: str, type: str = 'target')¶
Bases:
object- Parameters
event (str) –
id (str) –
type (str) –
- Return type
None
- event: str¶
- id: str¶
- type: str = 'target'¶
- class mate_common.models.integration.UnboundedPtrPolicy(policy_type: mate_common.models.integration.UnboundedPtrPolicyType = UnboundedPtrPolicyType.DEFAULT, max_alternatives: int = 3, custom_values: Optional[List[int]] = None)¶
Bases:
objectPolicy for handling unbounded pointers in under-constrained Manticore.
- Parameters
policy_type (mate_common.models.integration.UnboundedPtrPolicyType) –
max_alternatives (int) –
custom_values (Optional[List[int]]) –
- Return type
None
- custom_values: Optional[List[int]] = None¶
- max_alternatives: int = 3¶
- policy_type: mate_common.models.integration.UnboundedPtrPolicyType = 'default'¶
- class mate_common.models.integration.UnboundedPtrPolicyType(value)¶
Bases:
str,enum.EnumStrategy for handling unbounded pointers.
- CUSTOM = 'custom'¶
- DEFAULT = 'default'¶
- class mate_common.models.integration.UnderconstrainedOOBOptions(fast: bool = True, detector: Literal[<Detector.UnderconstrainedOOB: 'UnderconstrainedOOB'>] = Detector.UnderconstrainedOOB)¶
Bases:
mate_common.models.integration.DetectorOptionsBaseA testing detector that creates a case for every OOB access in underconstrained symex.
- Parameters
fast (bool) –
detector (Literal[<Detector.UnderconstrainedOOB: 'UnderconstrainedOOB'>]) –
- Return type
None
- detector: Literal[<Detector.UnderconstrainedOOB: 'UnderconstrainedOOB'>] = 'UnderconstrainedOOB'¶
- class mate_common.models.integration.UnderconstrainedTestCase(description: str, detector_triggered: Optional[mate_common.models.integration.Detector] = None, symbolic_inputs: List[mate_common.models.integration.ReachingInput] = <factory>, uid: int = -1, va: int = -1, va_mapping: Optional[str] = None, condition: Optional[str] = None, constraints: List[str] = <factory>)¶
Bases:
mate_common.models.integration.ReachingTestCaseA test case generated by under-constrained Manticore.
- Parameters
description (str) –
detector_triggered (Optional[mate_common.models.integration.Detector]) –
symbolic_inputs (List[mate_common.models.integration.ReachingInput]) –
uid (int) –
va (int) –
va_mapping (Optional[str]) –
condition (Optional[str]) –
constraints (List[str]) –
- Return type
None
- condition: Optional[str] = None¶
- constraints: List[str]¶
- uid: int = -1¶
- va: int = -1¶
- va_mapping: Optional[str] = None¶
- class mate_common.models.integration.UninitializedVarOptions(fast: bool = True, detector: Literal[<Detector.UninitializedVar: 'UninitializedVariable'>] = <Detector.UninitializedVar: 'UninitializedVariable'>, poi_info: List[mate_common.models.integration.FunctionVariableInfo] = <factory>)¶
Bases:
mate_common.models.integration.DetectorOptionsBase- Parameters
fast (bool) –
detector (Literal[<Detector.UninitializedVar: 'UninitializedVariable'>]) –
poi_info (List[mate_common.models.integration.FunctionVariableInfo]) –
- Return type
None
- detector: Literal[<Detector.UninitializedVar: 'UninitializedVariable'>] = 'UninitializedVariable'¶
- poi_info: List[mate_common.models.integration.FunctionVariableInfo]¶
- class mate_common.models.integration.UseAfterFreeOptions(fast: bool = True, detector: Literal[<Detector.UseAfterFree: 'UseAfterFree'>] = <Detector.UseAfterFree: 'UseAfterFree'>, poi_info: List[mate_common.models.integration.FreeUseInfo] = <factory>)¶
Bases:
mate_common.models.integration.DetectorOptionsBase- Parameters
fast (bool) –
detector (Literal[<Detector.UseAfterFree: 'UseAfterFree'>]) –
poi_info (List[mate_common.models.integration.FreeUseInfo]) –
- Return type
None
- detector: Literal[<Detector.UseAfterFree: 'UseAfterFree'>] = 'UseAfterFree'¶
- poi_info: List[mate_common.models.integration.FreeUseInfo]¶
- class mate_common.models.integration.VariableBoundsAccessOptions(fast: bool = True, detector: Literal[<Detector.VariableBoundsAccess: 'VariableBoundsAccess'>] = <Detector.VariableBoundsAccess: 'VariableBoundsAccess'>, poi_info: List[str] = <factory>)¶
Bases:
mate_common.models.integration.DetectorOptionsBase- Parameters
fast (bool) –
detector (Literal[<Detector.VariableBoundsAccess: 'VariableBoundsAccess'>]) –
poi_info (List[str]) –
- Return type
None
- detector: Literal[<Detector.VariableBoundsAccess: 'VariableBoundsAccess'>] = 'VariableBoundsAccess'¶
- poi_info: List[str]¶
- class mate_common.models.integration.Waypoint(start: mate_common.models.integration.Addr, end: mate_common.models.integration.Addr, asserts: List[mate_common.models.integration.Assertion] = <factory>, replacements: List[mate_common.models.integration.Replacement] = <factory>)¶
Bases:
objectWaypoint message relates to a specific area of code and contains relevant information for that area.
- Parameters
start (mate_common.models.integration.Addr) –
asserts (List[mate_common.models.integration.Assertion]) –
replacements (List[mate_common.models.integration.Replacement]) –
- Return type
None
- asserts: List[mate_common.models.integration.Assertion]¶
- replacements: List[mate_common.models.integration.Replacement]¶