public class InfoflowSolver extends IFDSSolver<soot.Unit,Abstraction,soot.jimple.toolkits.ide.icfg.BiDiInterproceduralCFG<soot.Unit,soot.SootMethod>> implements IInfoflowSolver
IMemoryBoundedSolver.IMemoryBoundedSolverStatusNotificationDEBUG, DEFAULT_CACHE_BUILDER, endSummary, executor, ffCache, flowFunctions, followReturnsPastSeeds, icfg, incoming, initialSeeds, jumpFunctions, logger, memoryManager, numThreads, propagationCount, shorteningMode, solverId, zeroValue| 构造器和说明 |
|---|
InfoflowSolver(AbstractInfoflowProblem problem,
InterruptableExecutor executor) |
| 限定符和类型 | 方法和说明 |
|---|---|
void |
cleanup()
Cleans up some unused memory.
|
protected Set<Abstraction> |
computeCallFlowFunction(heros.FlowFunction<Abstraction> flowFunction,
Abstraction d1,
Abstraction d2)
Computes the call flow function for the given call-site abstraction
|
protected Set<Abstraction> |
computeCallToReturnFlowFunction(heros.FlowFunction<Abstraction> flowFunction,
Abstraction d1,
Abstraction d2)
Computes the call-to-return flow function for the given call-site abstraction
|
protected Set<Abstraction> |
computeNormalFlowFunction(heros.FlowFunction<Abstraction> flowFunction,
Abstraction d1,
Abstraction d2)
Computes the normal flow function for the given set of start and end
abstractions.
|
protected Set<Abstraction> |
computeReturnFlowFunction(heros.FlowFunction<Abstraction> retFunction,
Abstraction d1,
Abstraction d2,
soot.Unit callSite,
Collection<Abstraction> callerSideDs)
Computes the return flow function for the given set of caller-side
abstractions.
|
Set<heros.solver.Pair<soot.Unit,Abstraction>> |
endSummary(soot.SootMethod m,
Abstraction d3)
Gets the end summary of the given method for the given incoming abstraction
|
protected InterruptableExecutor |
getExecutor()
Factory method for this solver's thread-pool executor.
|
long |
getPropagationCount()
Gets the number of edges propagated by the solver
|
AbstractInfoflowProblem |
getTabulationProblem()
Gets the IFDS problem solved by this solver
|
void |
injectContext(IInfoflowSolver otherSolver,
soot.SootMethod callee,
Abstraction d3,
soot.Unit callSite,
Abstraction d2,
Abstraction d1) |
boolean |
processEdge(heros.solver.PathEdge<soot.Unit,Abstraction> edge)
Schedules the given edge for processing in the solver
|
protected void |
processExit(heros.solver.PathEdge<soot.Unit,Abstraction> edge)
Lines 21-32 of the algorithm.
|
void |
setFollowReturnsPastSeedsHandler(IFollowReturnsPastSeedsHandler handler)
Sets a handler that will be called when a followReturnsPastSeeds case
happens, i.e., a taint leaves a method for which we have not seen any callers
|
void |
setPeerGroup(SolverPeerGroup solverPeerGroup)
Sets the peer group in which this solver operates.
|
void |
terminate()
Notifies the solver that no further edges will be scheduled
|
addFunction, addIncoming, addStatusListener, applyEndSummaryOnCall, awaitCompletionComputeValuesAndShutdown, forceTerminate, getDebugName, getMemoryManager, getTerminationReason, incoming, isKilled, isTerminated, onEndSummaryApplied, printStats, propagate, reset, scheduleEdgeProcessing, setMaxAbstractionPathLength, setMaxCalleesPerCallSite, setMaxJoinPointAbstractions, setMemoryManager, setPredecessorShorteningMode, setSolverId, solve, submitInitialSeedsclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetMemoryManager, setMaxAbstractionPathLength, setMaxCalleesPerCallSite, setMaxJoinPointAbstractions, setMemoryManager, setPredecessorShorteningMode, setSolverId, solvepublic InfoflowSolver(AbstractInfoflowProblem problem, InterruptableExecutor executor)
protected InterruptableExecutor getExecutor()
IFDSSolvergetExecutor 在类中 IFDSSolver<soot.Unit,Abstraction,soot.jimple.toolkits.ide.icfg.BiDiInterproceduralCFG<soot.Unit,soot.SootMethod>>public boolean processEdge(heros.solver.PathEdge<soot.Unit,Abstraction> edge)
IInfoflowSolverprocessEdge 在接口中 IInfoflowSolveredge - The edge to schedule for processingpublic void injectContext(IInfoflowSolver otherSolver, soot.SootMethod callee, Abstraction d3, soot.Unit callSite, Abstraction d2, Abstraction d1)
injectContext 在接口中 IInfoflowSolverprotected Set<Abstraction> computeReturnFlowFunction(heros.FlowFunction<Abstraction> retFunction, Abstraction d1, Abstraction d2, soot.Unit callSite, Collection<Abstraction> callerSideDs)
IFDSSolvercomputeReturnFlowFunction 在类中 IFDSSolver<soot.Unit,Abstraction,soot.jimple.toolkits.ide.icfg.BiDiInterproceduralCFG<soot.Unit,soot.SootMethod>>retFunction - The return flow function to computed1 - The abstraction at the beginning of the calleed2 - The abstraction at the exit node in the calleecallSite - The call sitecallerSideDs - The abstractions at the call siteprotected Set<Abstraction> computeNormalFlowFunction(heros.FlowFunction<Abstraction> flowFunction, Abstraction d1, Abstraction d2)
IFDSSolvercomputeNormalFlowFunction 在类中 IFDSSolver<soot.Unit,Abstraction,soot.jimple.toolkits.ide.icfg.BiDiInterproceduralCFG<soot.Unit,soot.SootMethod>>flowFunction - The normal flow function to computed1 - The abstraction at the method's start noded2 - The abstraction at the current nodeprotected Set<Abstraction> computeCallToReturnFlowFunction(heros.FlowFunction<Abstraction> flowFunction, Abstraction d1, Abstraction d2)
IFDSSolvercomputeCallToReturnFlowFunction 在类中 IFDSSolver<soot.Unit,Abstraction,soot.jimple.toolkits.ide.icfg.BiDiInterproceduralCFG<soot.Unit,soot.SootMethod>>flowFunction - The call-to-return flow function to computed1 - The abstraction at the current method's start
node.d2 - The abstraction at the call siteprotected Set<Abstraction> computeCallFlowFunction(heros.FlowFunction<Abstraction> flowFunction, Abstraction d1, Abstraction d2)
IFDSSolvercomputeCallFlowFunction 在类中 IFDSSolver<soot.Unit,Abstraction,soot.jimple.toolkits.ide.icfg.BiDiInterproceduralCFG<soot.Unit,soot.SootMethod>>flowFunction - The call flow function to computed1 - The abstraction at the current method's start node.d2 - The abstraction at the call sitepublic void cleanup()
IInfoflowSolvercleanup 在接口中 IInfoflowSolverpublic Set<heros.solver.Pair<soot.Unit,Abstraction>> endSummary(soot.SootMethod m, Abstraction d3)
IInfoflowSolverendSummary 在接口中 IInfoflowSolverendSummary 在类中 IFDSSolver<soot.Unit,Abstraction,soot.jimple.toolkits.ide.icfg.BiDiInterproceduralCFG<soot.Unit,soot.SootMethod>>m - The method for which to get the end summaryd3 - The incoming fact (context) for which to get the end summaryprotected void processExit(heros.solver.PathEdge<soot.Unit,Abstraction> edge)
IFDSSolverprocessExit 在类中 IFDSSolver<soot.Unit,Abstraction,soot.jimple.toolkits.ide.icfg.BiDiInterproceduralCFG<soot.Unit,soot.SootMethod>>edge - an edge whose target node resembles a method exitspublic void setFollowReturnsPastSeedsHandler(IFollowReturnsPastSeedsHandler handler)
IInfoflowSolversetFollowReturnsPastSeedsHandler 在接口中 IInfoflowSolverhandler - The handler to be called when a followReturnsPastSeeds case
happenspublic long getPropagationCount()
IInfoflowSolvergetPropagationCount 在接口中 IInfoflowSolverpublic AbstractInfoflowProblem getTabulationProblem()
IInfoflowSolvergetTabulationProblem 在接口中 IInfoflowSolverpublic void setPeerGroup(SolverPeerGroup solverPeerGroup)
IInfoflowSolversetPeerGroup 在接口中 IInfoflowSolversolverPeerGroup - The solver peer grouppublic void terminate()
IInfoflowSolverterminate 在接口中 IInfoflowSolverCopyright © 2022 Fraunhofer SIT. All rights reserved.