soot.jimple.infoflow.results.ResultSinkInfo Java Examples
The following examples show how to use
soot.jimple.infoflow.results.ResultSinkInfo.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: Test.java From JAADAS with GNU General Public License v3.0 | 6 votes |
@Override public void onResultsAvailable( IInfoflowCFG cfg, InfoflowResults results) { // Dump the results if (results == null) { print("No results found."); } else { for (ResultSinkInfo sink : results.getResults().keySet()) { print("Found a flow to sink " + sink + ", from the following sources:"); for (ResultSourceInfo source : results.getResults().get(sink)) { print("\t- " + source.getSource() + " (in " + cfg.getMethodOf(source.getSource()).getSignature() + ")"); if (source.getPath() != null && !source.getPath().isEmpty()) print("\t\ton Path " + source.getPath()); } } } }
Example #2
Source File: FlowDroidLauncher.java From soot-infoflow-android-iccta with GNU Lesser General Public License v2.1 | 6 votes |
@Override public void onResultsAvailable( IInfoflowCFG cfg, InfoflowResults results) { // Dump the results if (results == null) { print("No results found."); } else { Test.cfg = cfg; Test.results = results; for (ResultSinkInfo sink : results.getResults().keySet()) { print("Found a flow to sink " + sink + ", from the following sources:"); for (ResultSourceInfo source : results.getResults().get(sink)) { print("\t- " + source.getSource() + " (in " + cfg.getMethodOf(source.getSource()).getSignature() + ")"); if (source.getPath() != null) print("\t\ton Path " + Arrays.toString(source.getPath())); } } } }
Example #3
Source File: StringToPrimitiveTypeExtractorDataflowHandler.java From FuzzDroid with Apache License 2.0 | 4 votes |
@Override public void onResultsAvailable(IInfoflowCFG cfg, InfoflowResults results) { for(ResultSinkInfo sinkInfo : results.getResults().keySet()) { Stmt sink = sinkInfo.getSink(); InvokeExpr sinkExpr = sink.getInvokeExpr(); SootMethod sinkMethod = sinkExpr.getMethod(); Set<Object> values = new HashSet<Object>(); switch(sinkMethod.getSignature()) { case "<java.lang.Boolean: boolean parseBoolean(java.lang.String)>": values.add("true"); values.add("false"); break; //we add two random values case "<java.lang.Byte: byte parseByte(java.lang.String)>": values.add("0"); values.add("42"); break; //we add two random values case "<java.lang.Byte: byte parseByte(java.lang.String, int)>": values.add("0"); values.add("42"); break; //we add two random values case "<java.lang.Short: short parseShort(java.lang.String)>": values.add("0"); values.add("42"); break; //we add two random values case "<java.lang.Short: short parseShort(java.lang.String, int)>": values.add("0"); values.add("42"); break; //we add two random values case "<java.lang.Integer: int parseInteger(java.lang.String)>": values.add("0"); values.add("42"); break; //we add two random values case "<java.lang.Integer: int parseInteger(java.lang.String, int)>": values.add("0"); values.add("42"); break; //we add two random values case "<java.lang.Long: long parseLong(java.lang.String)>": values.add("0"); values.add("42"); break; //we add two random values case "<java.lang.Long: long parseLong(java.lang.String, int)>": values.add("0"); values.add("42"); break; //we add two random values case "<java.lang.Double: double parseDouble(java.lang.String)>": values.add("0"); values.add("42.0"); break; //we add two random values case "<java.lang.Float: float parseFloat(java.lang.String)>": values.add("0"); values.add("20.75f"); break; } //all sources Set<ResultSourceInfo> sourceInfos = results.getResults().get(sinkInfo); for(ResultSourceInfo sourceInfo : sourceInfos) { Stmt source = sourceInfo.getSource(); int sourceID = codePositionManager.getCodePositionForUnit(source).getID(); valuesToFuzz.put(sourceID, values); } } }
Example #4
Source File: PolicyEnforcementPoint.java From DroidForce with GNU Lesser General Public License v2.1 | 4 votes |
@Override public void onResultsAvailable(IInfoflowCFG cfg, InfoflowResults results) { log.info("FlowDroid has finished. Duration: " + (System.currentTimeMillis() - Main.startTime) +" ms."); Main.startTime = System.currentTimeMillis(); Settings.instance.setDummyMainToLibraryClass(); this.results = results; if (log.isDebugEnabled()) { log.debug(""); log.debug("InfoFlow Results"); MultiMap<ResultSinkInfo, ResultSourceInfo> r = results.getResults(); for (ResultSinkInfo k : r.keySet()) { log.debug("ResultSinkInfo: "+ k); for (ResultSourceInfo rsi: r.get(k)) { log.debug(" source: "+ rsi); } } log.debug(""); } log.info("Starting bytecode instrumentation."); log.info("Adding code to initialize PEPs."); Util.initializePePInAllPossibleClasses(Settings.instance.getApkPath()); log.info("Build code for new 'WaitPDPActivity"); // building the code has to be done here (not in the Main class, otherwise Jimple validation will fail String mainActivityClass = UpdateManifestAndCodeForWaitPDP.getMainActivityName(Settings.instance.getApkPath()); String packageName = UpdateManifestAndCodeForWaitPDP.getApplicationPackageName(Settings.instance.getApkPath()); UpdateManifestAndCodeForWaitPDP.updateWaitPDPActivity(packageName, mainActivityClass); // update packagename in field of WaitPDP class SootClass sc = Scene.v().getSootClass(Settings.INSTRUMENTATION_HELPER_JAVA); SootField sf1 = sc.getFieldByName("applicationPackageName"); Util.changeConstantStringInField(sf1, packageName); log.info("Adding Policy Enforcement Points (PEPs)."); doAccessControlChecks(cfg); log.info("Instrumentation is done."); if (Settings.mustOutputJimple()) { log.info("-------- Dumping Jimple bodies."); Main.dumpJimple(); log.info("--------"); } }