[Soot-list] Call Graph Generation Performance
Denis Bogdanas
denis.bogdanas at gmail.com
Wed Apr 6 13:11:28 EDT 2016
Interesting,
I'm assuming you use FlowDroid. I'm also looking into good options for
performance.
What size is the apk and how much faster are these settings compared to
defaults?
thanks,
Denis
On 6 April 2016 at 06:05, Simone Aonzo <simone.aonzo at gmail.com> wrote:
> This is the way I get a call graph in a reasonable time... if someone
> has better ideas: share!
>
> soot.G.reset();
> SetupApplication setupApplication = new
> SetupApplication(androidJar.toString(), apk.toString());
> setupApplication.getConfig().setFlowSensitiveAliasing(false);
> // --aliasflowins
> setupApplication.getConfig().setAccessPathLength(1); // --aplength
> n
> setupApplication.getConfig().setEnableStaticFieldTracking(false);
> // --nostatic
> setupApplication.getConfig().setEnableCallbacks(false);//
> --nocallbacks
>
> setupApplication.getConfig().setPathBuilder(DefaultPathBuilderFactory.PathBuilder.ContextSensitive);//
> --pathalgo
> setupApplication.getConfig().setComputeResultPaths(false); //
> --nopaths
> setupApplication.getConfig().setEnableExceptionTracking(false);
> // --noexceptions
>
> setupApplication.calculateSourcesSinksEntrypoints(sourcesAndSinks.toString());
>
> Options.v().set_src_prec(Options.src_prec_apk);
>
> Options.v().set_soot_classpath("/usr/lib/jvm/java-8-oracle/jre/lib/rt.jar:/usr/lib/jvm/java-8-oracle/jre/lib/jce.jar:.");
>
> Options.v().set_process_dir(Collections.singletonList(apk.toString()));
> Options.v().set_android_jars(androidJar.toString());
>
> List<String> excludeList = new LinkedList<String>();
> excludeList.add("java.");
> excludeList.add("sun.misc.");
> excludeList.add("android.");
> excludeList.add("org.apache.");
> excludeList.add("soot.");
> excludeList.add("javax.servlet.");
>
> Options.v().set_exclude(excludeList);
> Options.v().set_no_bodies_for_excluded(true);
> Options.v().set_output_format(Options.output_format_none);
> Options.v().set_allow_phantom_refs(true);
> Options.v().set_whole_program(true);
> Options.v().setPhaseOption("cg.spark", "on");
> Options.v().setPhaseOption("cg", "trim-clinit:false");
> SootMethod dummyMain =
> setupApplication.getEntryPointCreator().createDummyMain();
> Options.v().set_main_class(dummyMain.getSignature());
> Scene.v().setEntryPoints(Collections.singletonList(dummyMain));
> PackManager.v().runPacks();
> CallGraph callGraph = Scene.v().getCallGraph();
>
> 2016-04-04 12:37 GMT+02:00 Enzo Lucky <luckenzo24 at yahoo.com>:
> > Hi,
> >
> > I am using Soot to generate call graph of some Android apps, and I find
> Soot
> > take more than a day to generate the call graph for some apps. Can I do
> > anything other than the suggestions in the FlowDroid homepage
> > (
> https://github.com/secure-software-engineering/soot-infoflow-android/wiki#improving-performance
> )?
> > I want a precise call graph and hence, I didn't use any of the options.
> > Also, is the time normal or am I doing something wrong? Please find
> attached
> > my dummy main class.
> >
> > Thanks,
> > Enzo
> >
> > _______________________________________________
> > Soot-list mailing list
> > Soot-list at CS.McGill.CA
> > https://mailman.CS.McGill.CA/mailman/listinfo/soot-list
> >
> _______________________________________________
> Soot-list mailing list
> Soot-list at CS.McGill.CA
> https://mailman.CS.McGill.CA/mailman/listinfo/soot-list
>
--
Denis
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20160406/f66c72cb/attachment.html
More information about the Soot-list
mailing list