public abstract class AbstractInfoflowProblem extends soot.jimple.toolkits.ide.DefaultJimpleIFDSTabulationProblem<Abstraction,soot.jimple.toolkits.ide.icfg.BiDiInterproceduralCFG<soot.Unit,soot.SootMethod>>
| 限定符和类型 | 字段和说明 |
|---|---|
protected Map<soot.Unit,Set<Abstraction>> |
initialSeeds |
protected org.slf4j.Logger |
logger |
protected InfoflowManager |
manager |
protected INativeCallHandler |
ncHandler |
protected IInfoflowSolver |
solver |
protected TaintPropagationHandler |
taintPropagationHandler |
protected ITaintPropagationWrapper |
taintWrapper |
protected Abstraction |
zeroValue |
| 构造器和说明 |
|---|
AbstractInfoflowProblem(InfoflowManager manager) |
| 限定符和类型 | 方法和说明 |
|---|---|
void |
addInitialSeeds(soot.Unit unit,
Set<Abstraction> seeds)
Adds the given initial seeds to the information flow problem
|
boolean |
autoAddZero()
performance improvement: since we start directly at the sources, we do not
need to generate additional taints unconditionally
|
boolean |
computeValues() |
Abstraction |
createZeroValue() |
boolean |
followReturnsPastSeeds()
we need this option as we start directly at the sources, but need to go
backward in the call stack
|
Map<soot.Unit,Set<Abstraction>> |
getInitialSeeds()
Gets the initial seeds with which this information flow problem has been
configured
|
InfoflowManager |
getManager() |
protected Abstraction |
getZeroValue() |
boolean |
hasInitialSeeds()
Gets whether this information flow problem has initial seeds
|
Map<soot.Unit,Set<Abstraction>> |
initialSeeds() |
IInfoflowCFG |
interproceduralCFG() |
protected boolean |
isCallSiteActivatingTaint(soot.Unit callSite,
soot.Unit activationUnit) |
protected boolean |
isExceptionHandler(soot.Unit u)
Checks whether the given unit is the start of an exception handler
|
protected boolean |
isExcluded(soot.SootMethod sm)
Checks whether the given method is excluded from the data flow analysis,
i.e., should not be analyzed
|
protected boolean |
isInitialMethod(soot.SootMethod sm)
Gets whether the given method is an entry point, i.e. one of the initial
seeds belongs to the given method
|
protected Set<Abstraction> |
notifyOutFlowHandlers(soot.Unit stmt,
Abstraction d1,
Abstraction incoming,
Set<Abstraction> outgoing,
TaintPropagationHandler.FlowFunctionType functionType)
Notifies the outbound flow handlers, if any, about the computed result
abstractions for the current flow function
|
protected boolean |
registerActivationCallSite(soot.Unit callSite,
soot.SootMethod callee,
Abstraction activationAbs) |
void |
setActivationUnitsToCallSites(AbstractInfoflowProblem other) |
void |
setNativeCallHandler(INativeCallHandler handler)
Sets the handler class to be used for modeling the effects of native methods
on the taint state
|
void |
setSolver(IInfoflowSolver solver) |
void |
setTaintPropagationHandler(TaintPropagationHandler handler)
Sets a handler which is invoked whenever a taint is propagated
|
void |
setTaintWrapper(ITaintPropagationWrapper wrapper)
Sets the taint wrapper that shall be used for applying external library
models
|
void |
setZeroValue(Abstraction zeroValue) |
protected final InfoflowManager manager
protected final Map<soot.Unit,Set<Abstraction>> initialSeeds
protected ITaintPropagationWrapper taintWrapper
protected INativeCallHandler ncHandler
protected final org.slf4j.Logger logger
protected Abstraction zeroValue
protected IInfoflowSolver solver
protected TaintPropagationHandler taintPropagationHandler
public AbstractInfoflowProblem(InfoflowManager manager)
public void setSolver(IInfoflowSolver solver)
public void setZeroValue(Abstraction zeroValue)
public boolean followReturnsPastSeeds()
followReturnsPastSeeds 在接口中 heros.SolverConfigurationfollowReturnsPastSeeds 在类中 heros.template.DefaultIFDSTabulationProblem<soot.Unit,Abstraction,soot.SootMethod,soot.jimple.toolkits.ide.icfg.BiDiInterproceduralCFG<soot.Unit,soot.SootMethod>>public void setTaintWrapper(ITaintPropagationWrapper wrapper)
wrapper - The taint wrapper that shall be used for applying external
library modelspublic void setNativeCallHandler(INativeCallHandler handler)
handler - The native call handler to useprotected boolean isInitialMethod(soot.SootMethod sm)
sm - The method to checkpublic Map<soot.Unit,Set<Abstraction>> initialSeeds()
public boolean autoAddZero()
autoAddZero 在接口中 heros.SolverConfigurationautoAddZero 在类中 heros.template.DefaultIFDSTabulationProblem<soot.Unit,Abstraction,soot.SootMethod,soot.jimple.toolkits.ide.icfg.BiDiInterproceduralCFG<soot.Unit,soot.SootMethod>>protected boolean isCallSiteActivatingTaint(soot.Unit callSite,
soot.Unit activationUnit)
protected boolean registerActivationCallSite(soot.Unit callSite,
soot.SootMethod callee,
Abstraction activationAbs)
public void setActivationUnitsToCallSites(AbstractInfoflowProblem other)
public IInfoflowCFG interproceduralCFG()
interproceduralCFG 在接口中 heros.IFDSTabulationProblem<soot.Unit,Abstraction,soot.SootMethod,soot.jimple.toolkits.ide.icfg.BiDiInterproceduralCFG<soot.Unit,soot.SootMethod>>interproceduralCFG 在类中 heros.template.DefaultIFDSTabulationProblem<soot.Unit,Abstraction,soot.SootMethod,soot.jimple.toolkits.ide.icfg.BiDiInterproceduralCFG<soot.Unit,soot.SootMethod>>public void addInitialSeeds(soot.Unit unit,
Set<Abstraction> seeds)
unit - The unit to be considered as a seedseeds - The abstractions with which to start at the given seedpublic boolean hasInitialSeeds()
public Map<soot.Unit,Set<Abstraction>> getInitialSeeds()
public void setTaintPropagationHandler(TaintPropagationHandler handler)
handler - The handler to be invoked when propagating taintspublic Abstraction createZeroValue()
createZeroValue 在类中 heros.template.DefaultIFDSTabulationProblem<soot.Unit,Abstraction,soot.SootMethod,soot.jimple.toolkits.ide.icfg.BiDiInterproceduralCFG<soot.Unit,soot.SootMethod>>protected Abstraction getZeroValue()
protected boolean isExceptionHandler(soot.Unit u)
u - The unit to checkprotected Set<Abstraction> notifyOutFlowHandlers(soot.Unit stmt, Abstraction d1, Abstraction incoming, Set<Abstraction> outgoing, TaintPropagationHandler.FlowFunctionType functionType)
d1 - The abstraction at the beginning of the methodstmt - The statement that has just been processedincoming - The incoming abstraction from which the outbound ones
were computedoutgoing - The outbound abstractions to be propagated onfunctionType - The type of flow function that was computedpublic boolean computeValues()
computeValues 在接口中 heros.SolverConfigurationcomputeValues 在类中 heros.template.DefaultIFDSTabulationProblem<soot.Unit,Abstraction,soot.SootMethod,soot.jimple.toolkits.ide.icfg.BiDiInterproceduralCFG<soot.Unit,soot.SootMethod>>public InfoflowManager getManager()
protected boolean isExcluded(soot.SootMethod sm)
sm - The method to checkCopyright © 2022 Fraunhofer SIT. All rights reserved.