Header menu logo B2R2

State<'L, 'ExeCtx> Type

Represents a state used in LowUIR-based sensitive dataflow analysis.

Constructors

Constructor Description

State(hdl, lattice, scheme)

Full Usage: State(hdl, lattice, scheme)

Parameters:
Returns: State<'L, 'ExeCtx>
hdl : BinHandle
lattice : ILattice<'L>
scheme : IScheme<'L, 'ExeCtx>
Returns: State<'L, 'ExeCtx>

Instance members

Instance member Description

this.BinHandle

Full Usage: this.BinHandle

Returns: BinHandle

The given binary handle.

Returns: BinHandle

this.ClearPendingEdges

Full Usage: this.ClearPendingEdges

Clear the pending vertices.

this.ClearRemovalVertices

Full Usage: this.ClearRemovalVertices

Clear the vertices to be removed.

this.DefSVPToSSAVar

Full Usage: this.DefSVPToSSAVar

Parameters:
Returns: Variable
svp : SensitiveVarPoint<'ExeCtx>
Returns: Variable

this.DefUseMap

Full Usage: this.DefUseMap

Returns: Dictionary<SensitiveVarPoint<'ExeCtx>, Set<SensitiveVarPoint<'ExeCtx>>>

Mapping from a variable def to its uses.

Returns: Dictionary<SensitiveVarPoint<'ExeCtx>, Set<SensitiveVarPoint<'ExeCtx>>>

this.DomainSubState

Full Usage: this.DomainSubState

Returns: SubState<'L, 'ExeCtx>

Sub-state for the user's domain.

Returns: SubState<'L, 'ExeCtx>

this.EvalExpr

Full Usage: this.EvalExpr

Parameters:
Returns: 'L
pp : SensitiveProgramPoint<'ExeCtx>
expr : Expr
Returns: 'L

this.Evaluator

Full Usage: this.Evaluator

A setter for the evaluator.

this.FindSSADefStmtFromSSAVar

Full Usage: this.FindSSADefStmtFromSSAVar

Parameters:
Returns: Stmt
var : Variable
Returns: Stmt

this.GetSSAStmts

Full Usage: this.GetSSAStmts

Parameters:
Returns: Stmt[]
v : IVertex<LowUIRBasicBlock>
exeCtx : 'ExeCtx
Returns: Stmt[]

this.GetStmtInfos

Full Usage: this.GetStmtInfos

Parameters:
Returns: StmtInfo[]

Return the array of StmtInfos of the given vertex.

v : IVertex<LowUIRBasicBlock>
Returns: StmtInfo[]

this.InvalidateSSAStmts

Full Usage: this.InvalidateSSAStmts

Parameters:
v : IVertex<LowUIRBasicBlock>
exeCtx : 'ExeCtx

this.InvalidateVertex

Full Usage: this.InvalidateVertex

Parameters:

Invalidate the given vertex, which means that all the information associated with the vertex is removed from the state. The order of the removal is important, and it should be done in the current order.

v : IVertex<LowUIRBasicBlock>

this.IsEdgePending

Full Usage: this.IsEdgePending

Parameters:
Returns: bool

Check if the given vertex is pending for processing.

src : IVertex<LowUIRBasicBlock>
dst : IVertex<LowUIRBasicBlock>
Returns: bool

this.MarkEdgeAsPending

Full Usage: this.MarkEdgeAsPending

Parameters:

Mark the given vertex as pending, which means that the vertex needs to be processed.

s : IVertex<LowUIRBasicBlock>
d : IVertex<LowUIRBasicBlock>

this.MarkVertexAsRemoval

Full Usage: this.MarkVertexAsRemoval

Parameters:
Returns: bool

Mark the given vertex as removal, which means that the vertex needs to be removed. Returns false if the vertex is already marked for removal.

v : IVertex<LowUIRBasicBlock>
Returns: bool

Currently pending vertices for processing.

Returns: IEnumerable<IVertex<LowUIRBasicBlock> * IVertex<LowUIRBasicBlock>>

this.PerVertexIncomingDefs

Full Usage: this.PerVertexIncomingDefs

Returns: Dictionary<(IVertex<LowUIRBasicBlock> * 'ExeCtx), Map<VarKind, Set<SensitiveVarPoint<'ExeCtx>>>>

Mapping from a CFG vertex to its incoming definitions.

Returns: Dictionary<(IVertex<LowUIRBasicBlock> * 'ExeCtx), Map<VarKind, Set<SensitiveVarPoint<'ExeCtx>>>>

this.PerVertexOutgoingDefs

Full Usage: this.PerVertexOutgoingDefs

Returns: Dictionary<(IVertex<LowUIRBasicBlock> * 'ExeCtx), Map<VarKind, Set<SensitiveVarPoint<'ExeCtx>>>>

Mapping from a CFG vertex to its outgoing definitions.

Returns: Dictionary<(IVertex<LowUIRBasicBlock> * 'ExeCtx), Map<VarKind, Set<SensitiveVarPoint<'ExeCtx>>>>

this.PerVertexPossibleExeCtxs

Full Usage: this.PerVertexPossibleExeCtxs

Returns: Dictionary<IVertex<LowUIRBasicBlock>, HashSet<'ExeCtx>>
Returns: Dictionary<IVertex<LowUIRBasicBlock>, HashSet<'ExeCtx>>

this.PerVertexStackPointerInfos

Full Usage: this.PerVertexStackPointerInfos

Returns: Dictionary<(IVertex<LowUIRBasicBlock> * 'ExeCtx), (Lattice * Lattice)>
Returns: Dictionary<(IVertex<LowUIRBasicBlock> * 'ExeCtx), (Lattice * Lattice)>

this.Reset

Full Usage: this.Reset

Reset this state.

this.SSAVarToDefSVP

Full Usage: this.SSAVarToDefSVP

Parameters:
Returns: SensitiveVarPoint<'ExeCtx>
var : Variable
Returns: SensitiveVarPoint<'ExeCtx>

this.Scheme

Full Usage: this.Scheme

Returns: IScheme<'L, 'ExeCtx>
Returns: IScheme<'L, 'ExeCtx>

this.StackPointerSubState

Full Usage: this.StackPointerSubState

Returns: SubState<Lattice, 'ExeCtx>

Sub-state for the stack-pointer domain.

Returns: SubState<Lattice, 'ExeCtx>

this.StmtOfBBLs

Full Usage: this.StmtOfBBLs

Returns: Dictionary<ProgramPoint, StmtOfBBL>

Mapping from a program point to `StmtOfBBL`, which is a pair of a Low-UIR statement and its corresponding vertex that contains the statement.

Returns: Dictionary<ProgramPoint, StmtOfBBL>

this.TryFindSSADefStmtFromSSAVar

Full Usage: this.TryFindSSADefStmtFromSSAVar

Parameters:
Returns: Stmt option
var : Variable
Returns: Stmt option

this.UseDefMap

Full Usage: this.UseDefMap

Returns: Dictionary<SensitiveVarPoint<'ExeCtx>, Set<SensitiveVarPoint<'ExeCtx>>>

Mapping from a variable use to its definition.

Returns: Dictionary<SensitiveVarPoint<'ExeCtx>, Set<SensitiveVarPoint<'ExeCtx>>>

this.VerticesForRemoval

Full Usage: this.VerticesForRemoval

Returns: IEnumerable<IVertex<LowUIRBasicBlock>>

Returns a sequence of vertices that are pending for removal.

Returns: IEnumerable<IVertex<LowUIRBasicBlock>>

Type something to start searching.