<html><head></head><body><div style="color:#000; background-color:#fff; font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:16px"><div id="yui_3_16_0_ym19_1_1460023453514_3978">Hi Simone,</div><div id="yui_3_16_0_ym19_1_1460023453514_3976"><br></div><div dir="ltr" id="yui_3_16_0_ym19_1_1460023453514_3977">I am aware of the options (e.g. the access path length) you use, my understanding is using these options will make Soot generate a non-precise call graph. I wanted to know if there are other options to improve performance that wouldn't require sacrificing the precision of the call graph.</div><div id="yui_3_16_0_ym19_1_1460023453514_4348" dir="ltr"><br></div><div id="yui_3_16_0_ym19_1_1460023453514_4349" dir="ltr">Thanks,</div><div id="yui_3_16_0_ym19_1_1460023453514_4350" dir="ltr">Enzo<br></div><div id="yui_3_16_0_ym19_1_1460023453514_3918"><span></span></div> <div class="qtdSeparateBR"><br><br></div><div style="display: block;" class="yahoo_quoted"> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 16px;"> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 16px;"> <div dir="ltr"><font face="Arial" size="2"> On Thursday, April 7, 2016 8:48 AM, Simone Aonzo <simone.aonzo@gmail.com> wrote:<br></font></div> <br><br> <div class="y_msg_container"><div id="yiv5168438696"><div>
<br clear="none">
Yes, I use FlowDroid.<br clear="none">
The size of the apk is irrilevant, what matters is the size of the
classes.dex<br clear="none">
<br clear="none">
With my configuration running on an Intel(R) Core(TM) i7-4810MQ CPU
@ 2.80GHz:<br clear="none">
small, 2,3MB, 30 sec<br clear="none">
medium, 6,8MB, 1 minute<br clear="none">
big, 11MB (whatsapp), 3 minutes<br clear="none">
<br clear="none">
</div><div>
With the default configuration I've never seen it halting [but I
can't say that it never halts, dear Turing :)] with the medium and
the big dex, also after 7 hours.<br clear="none">
<br clear="none">
Keep in touch!<br clear="none">
Simone<br clear="none">
<br clear="none">
<br clear="none">
<div class="yiv5168438696yqt8719605932" id="yiv5168438696yqt99005"><div class="yiv5168438696moz-cite-prefix">On 06/04/2016 19:11, Denis Bogdanas
wrote:<br clear="none">
</div>
<blockquote type="cite">
<div dir="ltr">
<div>
<div>
<div>
<div>Interesting,<br clear="none">
</div>
I'm assuming you use FlowDroid. I'm also looking into good
options for performance.<br clear="none">
<br clear="none">
</div>
What size is the apk and how much faster are these settings
compared to defaults?<br clear="none">
<br clear="none">
</div>
thanks,<br clear="none">
</div>
Denis<br clear="none">
</div>
<div class="yiv5168438696gmail_extra"><br clear="none">
<div class="yiv5168438696gmail_quote">On 6 April 2016 at 06:05, Simone Aonzo
<span dir="ltr"><<a rel="nofollow" shape="rect" ymailto="mailto:simone.aonzo@gmail.com" target="_blank" href="mailto:simone.aonzo@gmail.com">simone.aonzo@gmail.com</a>></span>
wrote:<br clear="none">
<blockquote class="yiv5168438696gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">This is
the way I get a call graph in a reasonable time... if
someone<br clear="none">
has better ideas: share!<br clear="none">
<br clear="none">
soot.G.reset();<br clear="none">
SetupApplication setupApplication = new<br clear="none">
SetupApplication(androidJar.toString(), apk.toString());<br clear="none">
setupApplication.getConfig().setFlowSensitiveAliasing(false);<br clear="none">
// --aliasflowins<br clear="none">
setupApplication.getConfig().setAccessPathLength(1);
// --aplength n<br clear="none">
setupApplication.getConfig().setEnableStaticFieldTracking(false);<br clear="none">
// --nostatic<br clear="none">
setupApplication.getConfig().setEnableCallbacks(false);//
--nocallbacks<br clear="none">
setupApplication.getConfig().setPathBuilder(DefaultPathBuilderFactory.PathBuilder.ContextSensitive);//<br clear="none">
--pathalgo<br clear="none">
setupApplication.getConfig().setComputeResultPaths(false);
// --nopaths<br clear="none">
setupApplication.getConfig().setEnableExceptionTracking(false);<br clear="none">
// --noexceptions<br clear="none">
setupApplication.calculateSourcesSinksEntrypoints(sourcesAndSinks.toString());<br clear="none">
<br clear="none">
Options.v().set_src_prec(Options.src_prec_apk);<br clear="none">
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:.");<br clear="none">
Options.v().set_process_dir(Collections.singletonList(apk.toString()));<br clear="none">
Options.v().set_android_jars(androidJar.toString());<br clear="none">
<br clear="none">
List<String> excludeList = new
LinkedList<String>();<br clear="none">
excludeList.add("java.");<br clear="none">
excludeList.add("sun.misc.");<br clear="none">
excludeList.add("android.");<br clear="none">
excludeList.add("org.apache.");<br clear="none">
excludeList.add("soot.");<br clear="none">
excludeList.add("javax.servlet.");<br clear="none">
<br clear="none">
Options.v().set_exclude(excludeList);<br clear="none">
Options.v().set_no_bodies_for_excluded(true);<br clear="none">
Options.v().set_output_format(Options.output_format_none);<br clear="none">
Options.v().set_allow_phantom_refs(true);<br clear="none">
Options.v().set_whole_program(true);<br clear="none">
Options.v().setPhaseOption("cg.spark", "on");<br clear="none">
Options.v().setPhaseOption("cg",
"trim-clinit:false");<br clear="none">
SootMethod dummyMain =<br clear="none">
setupApplication.getEntryPointCreator().createDummyMain();<br clear="none">
Options.v().set_main_class(dummyMain.getSignature());<br clear="none">
Scene.v().setEntryPoints(Collections.singletonList(dummyMain));<br clear="none">
PackManager.v().runPacks();<br clear="none">
CallGraph callGraph = Scene.v().getCallGraph();<br clear="none">
<br clear="none">
2016-04-04 12:37 GMT+02:00 Enzo Lucky <<a rel="nofollow" shape="rect" ymailto="mailto:luckenzo24@yahoo.com" target="_blank" href="mailto:luckenzo24@yahoo.com"></a><a rel="nofollow" shape="rect" class="yiv5168438696moz-txt-link-abbreviated" ymailto="mailto:luckenzo24@yahoo.com" target="_blank" href="mailto:luckenzo24@yahoo.com">luckenzo24@yahoo.com</a>>:<br clear="none">
> Hi,<br clear="none">
><br clear="none">
> I am using Soot to generate call graph of some Android
apps, and I find Soot<br clear="none">
> take more than a day to generate the call graph for
some apps. Can I do<br clear="none">
> anything other than the suggestions in the FlowDroid
homepage<br clear="none">
> (<a rel="nofollow" shape="rect" target="_blank" href="https://github.com/secure-software-engineering/soot-infoflow-android/wiki#improving-performance">https://github.com/secure-software-engineering/soot-infoflow-android/wiki#improving-performance</a>)?<br clear="none">
> I want a precise call graph and hence, I didn't use any
of the options.<br clear="none">
> Also, is the time normal or am I doing something wrong?
Please find attached<br clear="none">
> my dummy main class.<br clear="none">
><br clear="none">
> Thanks,<br clear="none">
> Enzo<br clear="none">
><br clear="none">
> _______________________________________________<br clear="none">
> Soot-list mailing list<br clear="none">
> <a rel="nofollow" shape="rect" ymailto="mailto:Soot-list@CS.McGill.CA" target="_blank" href="mailto:Soot-list@CS.McGill.CA">Soot-list@CS.McGill.CA</a><br clear="none">
> <a rel="nofollow" shape="rect" target="_blank" href="https://mailman.cs.mcgill.ca/mailman/listinfo/soot-list">https://mailman.CS.McGill.CA/mailman/listinfo/soot-list</a><br clear="none">
><br clear="none">
_______________________________________________<br clear="none">
Soot-list mailing list<br clear="none">
<a rel="nofollow" shape="rect" ymailto="mailto:Soot-list@CS.McGill.CA" target="_blank" href="mailto:Soot-list@CS.McGill.CA">Soot-list@CS.McGill.CA</a><br clear="none">
<a rel="nofollow" shape="rect" target="_blank" href="https://mailman.cs.mcgill.ca/mailman/listinfo/soot-list">https://mailman.CS.McGill.CA/mailman/listinfo/soot-list</a><br clear="none">
</blockquote>
</div>
<br clear="none">
<br clear="all">
<br clear="none">
-- <br clear="none">
<div class="yiv5168438696gmail_signature">
<div dir="ltr">Denis<br clear="none">
</div>
</div>
</div>
</blockquote></div>
<br clear="none">
</div></div><br><div class="yqt8719605932" id="yqt62553">_______________________________________________<br clear="none">Soot-list mailing list<br clear="none"><a shape="rect" ymailto="mailto:Soot-list@CS.McGill.CA" href="mailto:Soot-list@CS.McGill.CA">Soot-list@CS.McGill.CA</a><br clear="none"><a shape="rect" href="https://mailman.cs.mcgill.ca/mailman/listinfo/soot-list" target="_blank">https://mailman.CS.McGill.CA/mailman/listinfo/soot-list</a><br clear="none"></div><br><br></div> </div> </div> </div></div></body></html>