本文整理汇总了Java中soot.jimple.infoflow.data.pathBuilders.DefaultPathBuilderFactory.PathBuilder类的典型用法代码示例。如果您正苦于以下问题:Java PathBuilder类的具体用法?Java PathBuilder怎么用?Java PathBuilder使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
PathBuilder类属于soot.jimple.infoflow.data.pathBuilders.DefaultPathBuilderFactory包,在下文中一共展示了PathBuilder类的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: runAnalysis
import soot.jimple.infoflow.data.pathBuilders.DefaultPathBuilderFactory.PathBuilder; //导入依赖的package包/类
private void runAnalysis(final Set<Unit> targetUnits) {
try {
Scene.v().getOrMakeFastHierarchy();
InplaceInfoflow infoflow = new InplaceInfoflow();
// InfoflowConfiguration.setAccessPathLength(2);
infoflow.setPathBuilderFactory(new DefaultPathBuilderFactory(
PathBuilder.ContextSensitive, true));
infoflow.setTaintWrapper(new EasyTaintWrapper(TAINT_WRAPPER_PATH));
infoflow.getConfig().setEnableExceptionTracking(false);
infoflow.getConfig().setEnableArraySizeTainting(false);
// infoflow.getConfig().setCallgraphAlgorithm(CallgraphAlgorithm.CHA);
System.out.println("Running data flow analysis...");
PermissionMethodParser pmp = PermissionMethodParser.fromFile(SOURCES_SINKS_FILE);
AccessPathBasedSourceSinkManager srcSinkManager =
new AccessPathBasedSourceSinkManager(pmp.getSources(), pmp.getSinks());
infoflow.addResultsAvailableHandler(new FuzzerResultsAvailableHandler(pmp.getSources(),
targetUnits));
infoflow.runAnalysis(srcSinkManager);
}
catch (IOException ex) {
throw new RuntimeException("Could not read source/sink file", ex);
}
}
示例2: runDataflowAnalysis
import soot.jimple.infoflow.data.pathBuilders.DefaultPathBuilderFactory.PathBuilder; //导入依赖的package包/类
private void runDataflowAnalysis() {
try{
Scene.v().getOrMakeFastHierarchy();
InplaceInfoflow infoflow = new InplaceInfoflow();
infoflow.setPathBuilderFactory(new DefaultPathBuilderFactory(
PathBuilder.ContextSensitive, true));
infoflow.setTaintWrapper(new EasyTaintWrapper(TAINT_WRAPPER_PATH));
infoflow.getConfig().setEnableExceptionTracking(false);
infoflow.getConfig().setEnableArraySizeTainting(false);
// infoflow.getConfig().setCallgraphAlgorithm(CallgraphAlgorithm.CHA);
System.out.println("Running data flow analysis...");
PermissionMethodParser pmp = PermissionMethodParser.fromFile(SOURCES_SINKS_FILE);
AccessPathBasedSourceSinkManager srcSinkManager =
new AccessPathBasedSourceSinkManager(pmp.getSources(), pmp.getSinks());
infoflow.addResultsAvailableHandler(new StringToPrimitiveTypeExtractorDataflowHandler(valuesToFuzz));
infoflow.runAnalysis(srcSinkManager);
}catch(Exception ex) {
ex.printStackTrace();
}
}
示例3: runDataflowAnalysis
import soot.jimple.infoflow.data.pathBuilders.DefaultPathBuilderFactory.PathBuilder; //导入依赖的package包/类
private void runDataflowAnalysis() {
try{
Scene.v().getOrMakeFastHierarchy();
InplaceInfoflow infoflow = new InplaceInfoflow();
// InfoflowConfiguration.setAccessPathLength(2);
infoflow.setPathBuilderFactory(new DefaultPathBuilderFactory(
PathBuilder.ContextSensitive, true));
infoflow.setTaintWrapper(new EasyTaintWrapper(TAINT_WRAPPER_PATH));
infoflow.getConfig().setEnableExceptionTracking(false);
infoflow.getConfig().setEnableArraySizeTainting(false);
// infoflow.getConfig().setCallgraphAlgorithm(CallgraphAlgorithm.CHA);
System.out.println("Running data flow analysis...");
PermissionMethodParser pmp = PermissionMethodParser.fromFile(SOURCES_SINKS_FILE);
AccessPathBasedSourceSinkManager srcSinkManager =
new AccessPathBasedSourceSinkManager(pmp.getSources(), pmp.getSinks());
infoflow.addResultsAvailableHandler(new FileFuzzerResultsAvailableHandler(fileFormatsFromDataflow));
infoflow.runAnalysis(srcSinkManager);
}catch(Exception ex) {
ex.printStackTrace();
}
}
示例4: multiSinkTest2
import soot.jimple.infoflow.data.pathBuilders.DefaultPathBuilderFactory.PathBuilder; //导入依赖的package包/类
@Test(timeout=300000)
public void multiSinkTest2() {
boolean oldPathAgnosticResults = Infoflow.getPathAgnosticResults();
try {
Infoflow infoflow = initInfoflow();
List<String> epoints = new ArrayList<String>();
epoints.add("<soot.jimple.infoflow.test.OtherTestCode: void multiSinkTest2()>");
Infoflow.setPathAgnosticResults(false);
infoflow.setPathBuilderFactory(new DefaultPathBuilderFactory(PathBuilder.ContextSensitive,
true));
infoflow.computeInfoflow(appPath, libPath, epoints, sources, sinks);
checkInfoflow(infoflow, 1);
Assert.assertTrue(infoflow.getResults().isPathBetweenMethods(sink, sourceDeviceId));
Assert.assertEquals(2, infoflow.getResults().numConnections());
}
finally {
Infoflow.setPathAgnosticResults(oldPathAgnosticResults);
}
}
示例5: pathAlgorithmToString
import soot.jimple.infoflow.data.pathBuilders.DefaultPathBuilderFactory.PathBuilder; //导入依赖的package包/类
private static String pathAlgorithmToString(PathBuilder pathBuilder) {
switch (pathBuilder) {
case ContextSensitive:
return "CONTEXTSENSITIVE";
case ContextInsensitive :
return "CONTEXTINSENSITIVE";
case ContextInsensitiveSourceFinder :
return "SOURCESONLY";
default :
return "UNKNOWN";
}
}
示例6: setPathBuilder
import soot.jimple.infoflow.data.pathBuilders.DefaultPathBuilderFactory.PathBuilder; //导入依赖的package包/类
/**
* Sets the algorithm to be used for reconstructing the paths between sources and sinks
*
* @param builder
* The path reconstruction algorithm to be used
*/
public void setPathBuilder(PathBuilder builder) {
this.pathBuilder = builder;
}