基于Heros的过程间数据流分析的相关API

来源:互联网 发布:网页游戏劫持数据 编辑:程序博客网 时间:2024/06/01 19:32

https://ssebuild.cased.de/nightly/soot/javadoc/

soot.jimple.toolkits.ide

ClassMain:

public classMain extends Object.

构造方法:public Main()

其他方法:public staticvoid main(String[] args)

 

ClassJimpleIFDSSolver<D,I extendsheros.InterproceduralCFG<Unit,SootMethod>>

public classJimpleIFDSSolver<D,I extendsheros.InterproceduralCFG<Unit,SootMethod>> extendsheros.solver.IFDSSolver<Unit,D,SootMethod,I>

构造方法:JimpleIFDSSolver(heros.IFDSTabulationProblem<Unit,D,SootMethod,I>problem)

JimpleIFDSSolver(heros.IFDSTabulationProblem<Unit,D,SootMethod,I>problem,Boolean dumpResults)

其他方法:

public voidsolve(),覆写

classheros.solver.IDESolver

<Unit,D,SootMethod,heros.solver.IFDSSolver.BinaryDomain,

I extendsheros.InterproceduralCFG<Unit,SootMethod>>中的solve()方法

public voiddumpResults()

 

ClassJimpleIDESolver<D,V,I extendsheros.InterproceduralCFG<Unit,SootMethod>>

         publicclass JimpleIDESolver<D,V,I extendsheros.InterproceduralCFG<Unit,SootMethod>> extendsheros.solver.IDESolver<Unit,D,SootMethod,V,I>

构造方法:

JimpleIDESolver(heros.IDETabulationProblem<Unit,D,SootMethod,V,I>problem)

JimpleIDESolver(heros.IDETabulationProblem<Unit,D,SootMethod,V,I>problem,Boolean dumpResults)

其他方法:

public voidsolve()覆写class heros.solver.IDESolver

<Unit,D,SootMethod,V,Iextends heros.InterproceduralCFG<Unit,SootMethod>>中的solve

public voiddumpResults()

 

ClassDefaultJimpleIDETabulationProblem

<D,V,I extends heros.InterproceduralCFG<Unit,SootMethod>>

Public abstractclass DefaultJimpleIDETabulationProblem

<D,V,Iextends heros.InterproceduralCFG<Unit,SootMethod> >

extendsheros.template.DefaultIDETabulationProblem<Unit,D,SootMethod,V,I>

一个DefaultIDETabulationProblem使用Units作为nodeSootMethods作为methods

构造方法:

DefaultJimpleIDETabulationProblem(Iicfg)

 

ClassDefaultJimpleIFDSTabulationProblem

<D,I extendsheros.InterproceduralCFG<Unit,SootMethod>>

         publicabstract class DefaultJimpleIFDSTabulationProblem

<D,I extendsheros.InterproceduralCFG<Unit,SootMethod>>

extendsheros.template.DefaultIFDSTabulationProblem<Unit,D,SootMethod,I>

一个DefaultIDETabulationProblem使用Units作为nodes和使用SootMethods作为methods

构造方法:

publicDefaultJimpleIFDSTabulationProblem(I icfg)

 

Class SortableCSVString

public classSortableCSVString extends Object implements Comparable<SortableCSVString>

构造方法:

publicSortableCSVString(String str,int pos)

其他方法:

public intcompareTo(SortableCSVString anotherString)

    compareTo in interface Comparable<SortableCSVString>中指定

CSV文件是以“,”为分隔表示表格内容的一种通用文件。详细的可见:

http://baike.baidu.com/link?url=APWkpi6lxwpSbNawYLgV-m819sh89xfiXFJ9xltVhC4yfG6JmZExJJxw13DUvY8CJnGLKANEA4PRbjye-u1jb9qmhXAiEQm8ixo0bCXABh7

https://ssebuild.cased.de/nightly/soot/javadoc/

soot.jimple.toolkits.ide.exampleproblems

Class IFDSReachingDefinitions

   public class IFDSReachingDefinitions

 https://ssebuild.cased.de/nightly/soot/javadoc/

soot.jimple.toolkits.ide.icfg

 

Interface BiDiInterproceduralCFG<N,M>

已知的子类:

AbstractJimpleBasedICFG,BackwardInterproceduralCFG,JimpleBasedInterproceduralCFG,OnTheFlyJimpleBasedCFG

publicinterface BiDiInterproceduralCFG<N,M> extendsheros.InterproceduralCFG<N,M>

一个支持计算前驱的InterproceduralCFG

 

 例子:Reachingdefinition

https://en.wikipedia.org/wiki/Reaching_definition

一个程序点的reachingdefinitions指的是定义当前语句中变量的当前值的那些赋值语句。

例如:

D1:x=1;

D2:y=x;

那么,D2程序点的reaching definitions就是D1,因为D2中的变量x的当前值是由D1定义的;

D1:x=1;

D2:x=2;

D3:y=x;

那么,D3程序点的reaching definitions就是D2,因为D3中的变量x的当前值是由D2定义的,而D1定义的x值在D2时被销毁了。

数据流的方向:前向;

交汇运算采用并集;

传递函数:针对赋值语句采用REACHout[S]=GEN[S]∪(REACHin[S]-KILL[S])。

0 0
原创粉丝点击