<html><head></head><body><div class="ydp879bb89fyahoo-style-wrap" style="font-family:Helvetica Neue, Helvetica, Arial, sans-serif;font-size:13px;"><div></div>
        <div dir="ltr" data-setdir="false">Hi Prof. Dr. Bodden,</div><div dir="ltr" data-setdir="false"><br></div><div dir="ltr" data-setdir="false">Thank you for the reply! I am using bare Soot because I am trying to add a wjtp subphase and I couldn't figure out how to do with Flowdroid without having to extend it and override constructCallgraph. Would there be a way for me to this with Flowdroid?</div><div dir="ltr" data-setdir="false"><br></div><div dir="ltr" data-setdir="false">Best regards,</div><div dir="ltr" data-setdir="false">Faridah Akinotcho</div><div><br></div>
        
        </div><div id="yahoo_quoted_2570394528" class="yahoo_quoted">
            <div style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;color:#26282a;">
                
                <div>
                    Le lundi 9 mai 2022, 05:20:22 UTC−7, Eric Bodden <eric.bodden@uni-paderborn.de> a écrit :
                </div>
                <div><br></div>
                <div><br></div>
                <div><div id="yiv5680284445"><div>
Hi <span style="font-family:Helvetica, Arial, sans-serif;" class="yiv5680284445">Faridah.</span>
<div class="yiv5680284445"><font face="Helvetica, Arial, sans-serif" class="yiv5680284445"><br clear="none" class="yiv5680284445">
</font></div>
<div class="yiv5680284445"><font face="Helvetica, Arial, sans-serif" class="yiv5680284445">When creating callgraphs for Android you should be using our Soot-extension FlowDroid because it models Android’s lifecycle. When you use bare Soot then the callgraph will be very incomplete.
 Are you using FlowDroid already?</font></div>
<div class="yiv5680284445"><font face="Helvetica, Arial, sans-serif" class="yiv5680284445"><br clear="none" class="yiv5680284445">
</font></div>
<div class="yiv5680284445"><font face="Helvetica, Arial, sans-serif" class="yiv5680284445">Cheers</font></div>
<div class="yiv5680284445"><font face="Helvetica, Arial, sans-serif" class="yiv5680284445">Eric<br clear="none" class="yiv5680284445">
</font>
<div><br clear="none" class="yiv5680284445">
<blockquote type="cite" class="yiv5680284445">
<div id="yiv5680284445yqt61682" class="yiv5680284445yqt2247497473"><div class="yiv5680284445">On 9. May 2022, at 00:11, Faridah Akinotcho <<a rel="nofollow noopener noreferrer" shape="rect" ymailto="mailto:faridath.akinotcho@yahoo.fr" target="_blank" href="mailto:faridath.akinotcho@yahoo.fr" class="yiv5680284445">faridath.akinotcho@yahoo.fr</a>> wrote:</div>
<br clear="none" class="yiv5680284445Apple-interchange-newline">
<div class="yiv5680284445">
<div class="yiv5680284445">
<div style="font-family:Helvetica Neue, Helvetica, Arial, sans-serif;font-size:13px;" class="yiv5680284445yahoo-style-wrap">
<div dir="ltr" class="yiv5680284445">
<div class="yiv5680284445">
<div dir="ltr" style="font-family:Helvetica, Arial, sans-serif;" class="yiv5680284445">
Hi,</div>
<div dir="ltr" style="font-family:Helvetica, Arial, sans-serif;" class="yiv5680284445">
<br clear="none" class="yiv5680284445">
</div>
<div dir="ltr" style="font-family:Helvetica, Arial, sans-serif;" class="yiv5680284445">
I am using Soot (org.soot.oss 4.2.1) to perform an interprocedural analysis on Android methods (in the wjtp phase). To this end, I am extracting reachable methods from Android lifecycles using Scene.v().getCallgraph().edgesOutOf(method). However, I noticed
 that some virtual and special edges seem to always be missing from the returned set. For e.g, given:</div>
<div dir="ltr" style="font-family:Helvetica, Arial, sans-serif;" class="yiv5680284445">
<br clear="none" class="yiv5680284445">
</div>
<div dir="ltr" style="font-family:Helvetica, Arial, sans-serif;" class="yiv5680284445">
<div class="yiv5680284445">
<pre style="white-space:pre-wrap;background-color:rgb(43, 43, 43);color:rgb(169, 183, 198);font-family:monospace;font-size:8pt;" class="yiv5680284445"><span style="color:rgb(204, 120, 50);" class="yiv5680284445">class </span>B <span style="color:rgb(204, 120, 50);" class="yiv5680284445">extends </span>A{<br clear="none" class="yiv5680284445">    <span style="color:rgb(204, 120, 50);" class="yiv5680284445">void </span><span style="color:rgb(255, 198, 109);" class="yiv5680284445">onCreate</span>(...){<br clear="none" class="yiv5680284445">        setContentView(C0027R.layout.merge)<span style="color:rgb(204, 120, 50);" class="yiv5680284445">;<br clear="none" class="yiv5680284445"></span><span style="color:rgb(204, 120, 50);" class="yiv5680284445">        super</span>.onCreate(bundle)<span style="color:rgb(204, 120, 50);" class="yiv5680284445">;<br clear="none" class="yiv5680284445"></span><span style="color:rgb(204, 120, 50);" class="yiv5680284445">        </span>setNextActivity(C.<span style="color:rgb(204, 120, 50);" class="yiv5680284445">class</span>)<span style="color:rgb(204, 120, 50);" class="yiv5680284445">;<br clear="none" class="yiv5680284445"></span><span style="color:rgb(204, 120, 50);" class="yiv5680284445">    </span>}<br clear="none" class="yiv5680284445">}<br clear="none" class="yiv5680284445"><br clear="none" class="yiv5680284445"><span style="color:rgb(204, 120, 50);" class="yiv5680284445">class </span>A{<br clear="none" class="yiv5680284445">    <span style="color:rgb(204, 120, 50);" class="yiv5680284445">public void </span><span style="color:rgb(255, 198, 109);" class="yiv5680284445">setNextActivity</span>(){<br clear="none" class="yiv5680284445">        ...<br clear="none" class="yiv5680284445">    }<br clear="none" class="yiv5680284445">}</pre>
</div>
<br clear="none" class="yiv5680284445">
</div>
<div dir="ltr" style="font-family:Helvetica, Arial, sans-serif;" class="yiv5680284445">
When computing the reachable methods for B.onCreate(), neither setContentView, super.onCreate or setNextActivity are included as targets for the outgoing edges (only clinit is returned). However, when using CHA instead of Spark, these are part of the returned
 set (along other overapproximations), so I am assuming there might be some issue when performing the points-to analysis. Here are the options I am using:</div>
<div dir="ltr" style="font-family:Helvetica, Arial, sans-serif;" class="yiv5680284445">
<br clear="none" class="yiv5680284445">
</div>
<div dir="ltr" style="font-family:Helvetica, Arial, sans-serif;" class="yiv5680284445">
<div class="yiv5680284445">
<div class="yiv5680284445">Options.v().set_src_prec(Options.src_prec_apk);</div>
<div class="yiv5680284445">Options.v().set_output_format(Options.output_format_none);</div>
<div class="yiv5680284445"><br clear="none" class="yiv5680284445">
</div>
<div class="yiv5680284445">Options.v().set_no_bodies_for_excluded(true);</div>
<div class="yiv5680284445">Options.v().set_allow_phantom_refs(true);</div>
<div class="yiv5680284445">Options.v().set_android_jars(androidJar);</div>
<div class="yiv5680284445"><br clear="none" class="yiv5680284445">
</div>
<div class="yiv5680284445">Options.v().set_process_dir(Collections.singletonList(apkPath));</div>
<div class="yiv5680284445">Options.v().set_soot_classpath(androidJar);</div>
<div class="yiv5680284445">Options.v().set_process_multiple_dex(true);</div>
<div class="yiv5680284445"><br clear="none" class="yiv5680284445">
</div>
<div class="yiv5680284445">Options.v().set_whole_program(true);</div>
<div class="yiv5680284445">Options.v().setPhaseOption("cg", "all-reachable:true");</div>
<div class="yiv5680284445">Options.v().setPhaseOption("cg.spark", "on");</div>
<div class="yiv5680284445">Options.v().setPhaseOption("cg.spark", "verbose:true");</div>
<div class="yiv5680284445">Options.v().setPhaseOption("cg.spark", "string-constants:true");</div>
<div class="yiv5680284445"><br clear="none" class="yiv5680284445">
</div>
<div class="yiv5680284445">Options.v().setPhaseOption("jb.ulp", "off");</div>
<div class="yiv5680284445"> </div>
<div class="yiv5680284445">Main.v().autoSetOptions();</div>
<div class="yiv5680284445">Scene.v().loadNecessaryClasses();</div>
</div>
<br clear="none" class="yiv5680284445">
</div>
<div dir="ltr" style="font-family:Helvetica, Arial, sans-serif;" class="yiv5680284445">
<br clear="none" class="yiv5680284445">
</div>
<div dir="ltr" style="font-family:Helvetica, Arial, sans-serif;" class="yiv5680284445">
<br clear="none" class="yiv5680284445">
</div>
<div dir="ltr" style="font-family:Helvetica, Arial, sans-serif;" class="yiv5680284445">
I would greatly appreciate any pointers about what I might be missing (maybe an option that wasn't set properly) or what the problem could be.</div>
<div style="font-family:Helvetica, Arial, sans-serif;" class="yiv5680284445">
<br clear="none" class="yiv5680284445">
</div>
<div style="font-family:Helvetica, Arial, sans-serif;" class="yiv5680284445ydpe100fcb3yiv8338436184ydpb2934a7fsignature">
<div style="font-family:Helvetica, Arial, sans-serif;" class="yiv5680284445">
<div dir="ltr" class="yiv5680284445">Best regards,</div>
<div dir="ltr" class="yiv5680284445">Faridah Akinotcho</div>
</div>
</div>
</div>
<br clear="none" class="yiv5680284445">
</div>
</div>
</div>
_______________________________________________<br clear="none" class="yiv5680284445">
Soot-list mailing list<br clear="none" class="yiv5680284445">
<a rel="nofollow noopener noreferrer" shape="rect" ymailto="mailto:Soot-list@CS.McGill.CA" target="_blank" href="mailto:Soot-list@CS.McGill.CA" class="yiv5680284445">Soot-list@CS.McGill.CA</a><br clear="none" class="yiv5680284445">
https://mailman.CS.McGill.CA/mailman/listinfo/soot-list<br clear="none" class="yiv5680284445">
</div></div>
</blockquote>
</div>
<br clear="none" class="yiv5680284445">
</div>
</div></div></div>
            </div>
        </div></body></html>