[Soot-list] Is this a bug in Soot? Same var, different types!!
Modhi Alsobiehy
m99m20 at hotmail.com
Thu Aug 28 01:35:56 EDT 2014
Hi all,
I have the following issues with the attached code which is supposed to run flowdroid and produce the CFG of the apk..
1. for most of the apps, I get an exception indicating that one of the values has two types, resulting from line: PackManager.v().runPacks();
2. app.runInfoflow(); does not run for some apps, yet running flowdroid on the app from the command line works!..
Your quick response is deeply appreciated!
Thank you,
Modhi
code snippets:
--------------------------
String apk = "D:/APKs/xxxx.apk";
SetupApplication app = new SetupApplication("D:/AndroidADT/adt-bundle-windows-x86_64-20131030/sdk/platforms",apk);
try {
app.calculateSourcesSinksEntrypoints("D:/FlowDroid/SourcesAndSinks.txt");
app.printSinks();
ResultsAvailableHandler rah = new ResAvailable();
InfoflowResults ir = new InfoflowResults();
ir = app.runInfoflow(rah);
System.out.println("FlowDroid Results:");
System.in.read();
if(ir != null)
ir.printResults(); // here sometimes ir is null
System.out.println("FlowDroid Results ends..");
System.in.read();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
soot.G.reset();
Options.v().set_src_prec(Options.src_prec_apk);
Options.v().set_process_dir(Collections.singletonList(apk));
Options.v().set_android_jars("D:/AndroidADT/adt-bundle-windows-x86_64-20131030/sdk/platforms");
Options.v().set_whole_program(true);
Options.v().set_allow_phantom_refs(true);
Options.v().set_output_format(Options.output_format_none);
Options.v().setPhaseOption("cg.spark", "on");
Scene.v().loadNecessaryClasses();
SootMethod entryPoint = app.getEntryPointCreator().createDummyMain();
Options.v().set_main_class(entryPoint.getSignature());
Scene.v().setEntryPoints(Collections.singletonList(entryPoint));
System.out.println(entryPoint.getActiveBody());
PackManager.v().runPacks(); // the exception always refers to this line
------------------------------------------------------------
the exception I got:
---------------------------
Exception in thread "main" java.lang.RuntimeException: Value $r0 of type de.underflow.calc.CalculatorPreferenceActivity previously had type android.os.Bundle
at soot.jimple.spark.pag.PAG.makeLocalVarNode(PAG.java:543)
at soot.jimple.spark.builder.MethodNodeFactory.caseLocal(MethodNodeFactory.java:219)
at soot.jimple.internal.JimpleLocal.apply(JimpleLocal.java:136)
at soot.jimple.spark.builder.MethodNodeFactory$1.caseAssignStmt(MethodNodeFactory.java:76)
at soot.jimple.internal.JAssignStmt.apply(JAssignStmt.java:238)
at soot.jimple.spark.builder.MethodNodeFactory.handleStmt(MethodNodeFactory.java:69)
at soot.jimple.spark.pag.MethodPAG.buildNormal(MethodPAG.java:179)
at soot.jimple.spark.pag.MethodPAG.build(MethodPAG.java:148)
at soot.jimple.spark.solver.OnFlyCallGraph.processReachables(OnFlyCallGraph.java:64)
at soot.jimple.spark.solver.OnFlyCallGraph.build(OnFlyCallGraph.java:56)
at soot.jimple.spark.builder.ContextInsensitiveBuilder.build(ContextInsensitiveBuilder.java:77)
at soot.jimple.spark.SparkTransformer.internalTransform(SparkTransformer.java:84)
at soot.SceneTransformer.transform(SceneTransformer.java:39)
at soot.Transform.apply(Transform.java:90)
at soot.RadioScenePack.internalApply(RadioScenePack.java:57)
at soot.jimple.toolkits.callgraph.CallGraphPack.internalApply(CallGraphPack.java:49)
at soot.Pack.apply(Pack.java:116)
at soot.PackManager.runWholeProgramPacks(PackManager.java:538)
at soot.PackManager.runPacksNormally(PackManager.java:443)
at soot.PackManager.runPacks(PackManager.java:389)
at apkCFG.CFG.main(CFG.java:79)
------------------------------------------
For another app:
-----------------------
Exception in thread "main" java.lang.RuntimeException: Value $r2 of type com.google.ads.AdActivity previously had type com.google.ads.AdSize
at soot.jimple.spark.pag.PAG.makeLocalVarNode(PAG.java:543)
at soot.jimple.spark.builder.MethodNodeFactory.caseLocal(MethodNodeFactory.java:219)
at soot.jimple.internal.JimpleLocal.apply(JimpleLocal.java:136)
at soot.jimple.spark.builder.MethodNodeFactory.getNode(MethodNodeFactory.java:60)
at soot.jimple.spark.pag.PAG.addCallTarget(PAG.java:1045)
at soot.jimple.spark.pag.PAG.addCallTarget(PAG.java:781)
at soot.jimple.spark.solver.OnFlyCallGraph.processCallEdges(OnFlyCallGraph.java:74)
at soot.jimple.spark.solver.OnFlyCallGraph.build(OnFlyCallGraph.java:57)
at soot.jimple.spark.solver.PropWorklist.handleVarNode(PropWorklist.java:122)
at soot.jimple.spark.solver.PropWorklist.propagate(PropWorklist.java:52)
at soot.jimple.spark.SparkTransformer.internalTransform(SparkTransformer.java:152)
at soot.SceneTransformer.transform(SceneTransformer.java:39)
at soot.Transform.apply(Transform.java:90)
at soot.RadioScenePack.internalApply(RadioScenePack.java:57)
at soot.jimple.toolkits.callgraph.CallGraphPack.internalApply(CallGraphPack.java:49)
at soot.Pack.apply(Pack.java:116)
at soot.PackManager.runWholeProgramPacks(PackManager.java:538)
at soot.PackManager.runPacksNormally(PackManager.java:443)
at soot.PackManager.runPacks(PackManager.java:389)
at apkCFG.CFG.main(CFG.java:79)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20140828/d3461c3b/attachment-0003.html
More information about the Soot-list
mailing list