cozy.concolic.session — cozy 1.1 documentation

# `cozy.concolic.session`

## Module Contents

### Classes

`JointConcolicSession` | This class is used for jointly running two sessions using concolic execution. The sessions need to be run

class cozy.concolic.session.JointConcolicSession(sess_left: cozy.session.Session, sess_right: cozy.session.Session, candidate_heuristic_left: collections.abc.Callable[[list[angr.SimState]], angr.SimState] | None = None, candidate_heuristic_right: collections.abc.Callable[[list[angr.SimState]], angr.SimState] | None = None, termination_heuristic_left: collections.abc.Callable[[angr.sim_manager.SimulationManager], bool] | None = None, termination_heuristic_right: collections.abc.Callable[[angr.sim_manager.SimulationManager], bool] | None = None)

  This class is used for jointly running two sessions using concolic execution. The sessions need to be run jointly because the concrete values generated during concolic execution need to be fed to both programs.

  run(args_left: list[claripy.ast.bits], args_right: list[claripy.ast.bits], symbols: set[claripy.BVS] | frozenset[claripy.BVS], cache_intermediate_states: bool = False, ret_addr_left: int | None = None, ret_addr_right: int | None = None) → tuple[cozy.session.RunResult, cozy.session.RunResult]

    Jointly run two sessions.

    Parameters:

      - args_left (list[claripy.ast.bits]) – The arguments to pass to the left session.

      - args_right (list[claripy.ast.bits]) – The arguments to pass to the right session.

      - symbols (set[claripy.BVS] | frozenset[claripy.BVS]) – All symbolic values used in the two sessions. These symbols may be passed as arguments, or may have been pre-stored in the memory of the session before this method was called. This set is required during the concretization step where we need to generate concrete values for all symbolic values in the program.

      - cache_intermediate_states (bool) – If this flag is True, then intermediate execution states will be cached, preventing their garbage collection. This is required for dumping the execution graph which is used in visualization.

      - ret_addr_left (int | None) – What address to return to if calling as a function

      - ret_addr_right (int | None) – What address to return to if calling as a function

    Returns:

      The result of running the two sessions, where the first element of the return tuple being the left session’s result, and the second element being the right session’s result.

    Return type:

      tuple[RunResult, RunResult]