From 224f97431fe180272bebd7cea1ad682b16cd9716 Mon Sep 17 00:00:00 2001 From: david-fong Date: Thu, 25 Nov 2021 17:13:30 -0800 Subject: [PATCH] change soot deps to use maven central --- .gitignore | 3 +- Slicer4J/pom.xml | 18 ++++-- .../slicer/dynamic/slicer4j/Slicer.java | 57 +++++++++++++++++++ 3 files changed, 73 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 95d73f9..a3a6618 100644 --- a/.gitignore +++ b/.gitignore @@ -13,9 +13,10 @@ **/.settings **/.classpath **/.idea +*.iml **/.project data/ **/target/* **/*.log Dataset/apps/*/*.txt -Dataset/apps/*/*.dat \ No newline at end of file +Dataset/apps/*/*.dat diff --git a/Slicer4J/pom.xml b/Slicer4J/pom.xml index e1e566a..20457c5 100644 --- a/Slicer4J/pom.xml +++ b/Slicer4J/pom.xml @@ -130,12 +130,12 @@ - + ca.ubc.ece.resess @@ -147,12 +147,22 @@ graphviz-java 0.18.1 + + org.soot-oss + soot + [4.2.1] + runtime + de.tud.sse soot-infoflow 2.9.0 - system - ${project.basedir}/libs/soot-infoflow-cmd-2.9.0-jar-with-dependencies.jar + + + org.soot-oss + soot + + diff --git a/Slicer4J/src/main/java/ca/ubc/ece/resess/slicer/dynamic/slicer4j/Slicer.java b/Slicer4J/src/main/java/ca/ubc/ece/resess/slicer/dynamic/slicer4j/Slicer.java index b849e19..a6205ef 100644 --- a/Slicer4J/src/main/java/ca/ubc/ece/resess/slicer/dynamic/slicer4j/Slicer.java +++ b/Slicer4J/src/main/java/ca/ubc/ece/resess/slicer/dynamic/slicer4j/Slicer.java @@ -220,6 +220,63 @@ public void runInstrumentedJarFromMain(String pathToJar, String mainClass, Strin reader.close(); } + public void logApiForIdePlugin() { + List trs = Parser.readFile(fileToParse, staticLogFile); + + prepare(); + DynamicControlFlowGraph icdg = new DynamicControlFlowGraph(); + icdg.createDCFG(trs); + printGraph(icdg); + + if (variableString == null) { + variableString = "*"; + } + FrameworkModel.setStubDroidPath(stubDroidPath); + FrameworkModel.setTaintWrapperFile(taintWrapperPath); + + List stmts = new ArrayList<>(); + for (Integer backSlicePos: backwardSlicePositions) { + stmts.add(icdg.mapNoUnits(backSlicePos)); + } + + List variables = new ArrayList<>(); + if (!variableString.equals("*")) { + String[] split = variableString.split("-"); + for (String s : split) { + variables.add("$" + s); + } + } + setVariables(variables); + + Set accessPaths = new HashSet<>(); + for (String v: variables) { + for (StatementInstance stmt: stmts) { + accessPaths.add(new AccessPath(v, new Type(){ + private static final long serialVersionUID = 1L; + @Override + public String toString() { + return "SlicingCriterionType"; + } + }, stmt.getLineNo(), AccessPath.NOT_DEFINED, stmt)); + } + } + + setWorkingSet(new SlicingWorkingSet(false)); + DynamicSlice dynamicSlice = slice(icdg, true, false, false, false, stmts, accessPaths, getWorkingSet()); +// dynamicPrint = new LinkedHashSet<>(); +// SlicePrinter.printSlices(dynamicSlice); +// SlicePrinter.printSliceGraph(dynamicSlice); +// SlicePrinter.printDotGraph(outDir, dynamicSlice); +// SlicePrinter.printSliceLines(outDir, dynamicSlice); +// SlicePrinter.printRawSlice(outDir, dynamicSlice); + SlicePrinter.printSliceWithDependencies(outDir, dynamicSlice); +// DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy_MM_dd_HH_mm_ss"); +// LocalDateTime now = LocalDateTime.now(); +// String resultFileName = outDir + File.separator + "result_" +mode+"_"+ dtf.format(now) + ".csv"; +// SlicePrinter.printToCSV(resultFileName, dynamicSlice); + + } + public static void main(String [] args) { long startTime = System.nanoTime(); boolean justTrace = false;