<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><div class="gmail_default" style="font-size:12.800000190734863px">Hello Steven, </div><div class="gmail_default" style="font-size:12.800000190734863px"><br></div><div class="gmail_default" style="font-size:12.800000190734863px">I am using FlowDroid API, The "SetupApplication" class has method "<span style="color:rgb(0,0,0);font-family:Menlo;font-size:9pt">initializeSoot"</span> that is responsible to initialize soot, I have tried to set the flag for whole program but it seems it is not working. Please, see the code below.</div><div class="gmail_default" style="font-size:12.800000190734863px"> </div><div class="gmail_default" style="font-size:12.800000190734863px"><pre style="color:rgb(0,0,0)">private <span style="color:rgb(128,0,0);font-weight:bold">void</span> initializeSoot<span style="color:rgb(128,128,48)">(</span>boolean constructCallgraph<span style="color:rgb(128,128,48)">)</span> <span style="color:rgb(128,0,128)">{</span>
logger<span style="color:rgb(128,128,48)">.</span>info<span style="color:rgb(128,128,48)">(</span><span style="color:rgb(128,0,0)">"</span><span style="color:rgb(0,0,230)">Initializing Soot...</span><span style="color:rgb(128,0,0)">"</span><span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,0,128)">;</span>
final <span style="color:rgb(96,48,0)">String</span> androidJar <span style="color:rgb(128,128,48)">=</span> config<span style="color:rgb(128,128,48)">.</span>getAnalysisFileConfig<span style="color:rgb(128,128,48)">(</span><span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,128,48)">.</span>getAndroidPlatformDir<span style="color:rgb(128,128,48)">(</span><span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,0,128)">;</span>
final <span style="color:rgb(96,48,0)">String</span> apkFileLocation <span style="color:rgb(128,128,48)">=</span> config<span style="color:rgb(128,128,48)">.</span>getAnalysisFileConfig<span style="color:rgb(128,128,48)">(</span><span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,128,48)">.</span>getTargetAPKFile<span style="color:rgb(128,128,48)">(</span><span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,0,128)">;</span>
<span style="color:rgb(105,105,105)">// Clean up any old Soot instance we may have</span>
G<span style="color:rgb(128,128,48)">.</span>reset<span style="color:rgb(128,128,48)">(</span><span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,0,128)">;</span>
Options<span style="color:rgb(128,128,48)">.</span>v<span style="color:rgb(128,128,48)">(</span><span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,128,48)">.</span>set_no_bodies_for_excluded<span style="color:rgb(128,128,48)">(</span>true<span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,0,128)">;</span>
Options<span style="color:rgb(128,128,48)">.</span>v<span style="color:rgb(128,128,48)">(</span><span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,128,48)">.</span>set_allow_phantom_refs<span style="color:rgb(128,128,48)">(</span>true<span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,0,128)">;</span>
<span style="color:rgb(128,0,0);font-weight:bold">if</span> <span style="color:rgb(128,128,48)">(</span>config<span style="color:rgb(128,128,48)">.</span>getWriteOutputFiles<span style="color:rgb(128,128,48)">(</span><span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,128,48)">)</span>
Options<span style="color:rgb(128,128,48)">.</span>v<span style="color:rgb(128,128,48)">(</span><span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,128,48)">.</span>set_output_format<span style="color:rgb(128,128,48)">(</span>Options<span style="color:rgb(128,128,48)">.</span>output_format_jimple<span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,0,128)">;</span>
<span style="color:rgb(128,0,0);font-weight:bold">else</span>
Options<span style="color:rgb(128,128,48)">.</span>v<span style="color:rgb(128,128,48)">(</span><span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,128,48)">.</span>set_output_format<span style="color:rgb(128,128,48)">(</span>Options<span style="color:rgb(128,128,48)">.</span>output_format_none<span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,0,128)">;</span>
Options<span style="color:rgb(128,128,48)">.</span>v<span style="color:rgb(128,128,48)">(</span><span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,128,48)">.</span>set_whole_program<span style="color:rgb(128,128,48)">(</span>constructCallgraph<span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,0,128)">;</span>
Options<span style="color:rgb(128,128,48)">.</span>v<span style="color:rgb(128,128,48)">(</span><span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,128,48)">.</span>set_process_dir<span style="color:rgb(128,128,48)">(</span>Collections<span style="color:rgb(128,128,48)">.</span>singletonList<span style="color:rgb(128,128,48)">(</span>apkFileLocation<span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,0,128)">;</span>
<span style="color:rgb(128,0,0);font-weight:bold">if</span> <span style="color:rgb(128,128,48)">(</span>forceAndroidJar<span style="color:rgb(128,128,48)">)</span>
Options<span style="color:rgb(128,128,48)">.</span>v<span style="color:rgb(128,128,48)">(</span><span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,128,48)">.</span>set_force_android_jar<span style="color:rgb(128,128,48)">(</span>androidJar<span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,0,128)">;</span>
<span style="color:rgb(128,0,0);font-weight:bold">else</span>
Options<span style="color:rgb(128,128,48)">.</span>v<span style="color:rgb(128,128,48)">(</span><span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,128,48)">.</span>set_android_jars<span style="color:rgb(128,128,48)">(</span>androidJar<span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,0,128)">;</span>
Options<span style="color:rgb(128,128,48)">.</span>v<span style="color:rgb(128,128,48)">(</span><span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,128,48)">.</span>set_src_prec<span style="color:rgb(128,128,48)">(</span>Options<span style="color:rgb(128,128,48)">.</span>src_prec_apk_class_jimple<span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,0,128)">;</span>
Options<span style="color:rgb(128,128,48)">.</span>v<span style="color:rgb(128,128,48)">(</span><span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,128,48)">.</span>set_keep_line_number<span style="color:rgb(128,128,48)">(</span>false<span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,0,128)">;</span>
Options<span style="color:rgb(128,128,48)">.</span>v<span style="color:rgb(128,128,48)">(</span><span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,128,48)">.</span>set_keep_offset<span style="color:rgb(128,128,48)">(</span>false<span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,0,128)">;</span>
Options<span style="color:rgb(128,128,48)">.</span>v<span style="color:rgb(128,128,48)">(</span><span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,128,48)">.</span>set_throw_analysis<span style="color:rgb(128,128,48)">(</span>Options<span style="color:rgb(128,128,48)">.</span>throw_analysis_dalvik<span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,0,128)">;</span>
Options<span style="color:rgb(128,128,48)">.</span>v<span style="color:rgb(128,128,48)">(</span><span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,128,48)">.</span>set_process_multiple_dex<span style="color:rgb(128,128,48)">(</span>config<span style="color:rgb(128,128,48)">.</span>getMergeDexFiles<span style="color:rgb(128,128,48)">(</span><span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,0,128)">;</span>
<b>Options<span style="color:rgb(128,128,48)">.</span>v<span style="color:rgb(128,128,48)">(</span><span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,128,48)">.</span>set_whole_program<span style="color:rgb(128,128,48)">(</span>true<span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,0,128)">;</span></b>
System<span style="color:rgb(128,128,48)">.</span>out<span style="color:rgb(128,128,48)">.</span>println<span style="color:rgb(128,128,48)">(</span><span style="color:rgb(128,0,0)">"</span><span style="color:rgb(0,0,230)">Soot Initialization called</span><span style="color:rgb(128,0,0)">"</span><span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,0,128)">;</span></pre></div><div class="gmail_default" style="font-size:12.800000190734863px"><br></div><div class="gmail_default" style="font-size:12.800000190734863px">Thanks,</div><div class="gmail_default" style="font-size:12.800000190734863px">Umar</div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Feb 28, 2018 at 11:58 AM, Umar Farooq <span dir="ltr"><<a href="mailto:ufaro001@ucr.edu" target="_blank">ufaro001@ucr.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Hello Steven, </div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">I am using FlowDroid API, The "SetupApplication" class has method "<span style="color:rgb(0,0,0);font-family:Menlo;font-size:9pt">initializeSoot"</span> that is responsible to initialize soot, I have tried to set the flag for whole program but it seems it is not working. Please, see my code in attachment. </div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Thanks,</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Umar</div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Feb 28, 2018 at 1:48 AM, Arzt, Steven <span dir="ltr"><<a href="mailto:steven.arzt@sit.fraunhofer.de" target="_blank">steven.arzt@sit.fraunhofer.de</a><wbr>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div lang="DE" link="#0563C1" vlink="#954F72">
<div class="m_-1066022445054072587m_1888789394862077569WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Hi Umar,<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">How do you attempt to run FlowDroid? Do you use the FlowDroid API or the command-line program? Please show your command
line or your code with which you invoke FlowDroid.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Best regards,<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"> Steven<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif"> Soot-list [mailto:<a href="mailto:soot-list-bounces@cs.mcgill.ca" target="_blank">soot-list-bounces@cs.m<wbr>cgill.ca</a>]
<b>On Behalf Of </b>Umar Farooq<br>
<b>Sent:</b> Wednesday, February 28, 2018 2:33 AM<br>
<b>To:</b> <a href="mailto:soot-list@cs.mcgill.ca" target="_blank">soot-list@cs.mcgill.ca</a><br>
<b>Subject:</b> [Soot-list] [Soot][FlowDroid] Running FlowDroid in whole-program mode (-w)<u></u><u></u></span></p><div><div class="m_-1066022445054072587h5">
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif">Hi All,<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif"><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif">I want to run FlowDroid in whole program mode, I have tried to call "</span><span style="font-size:9.0pt;font-family:"Menlo",serif;color:black">soot.options.Options.<i>v</i>().set_<wbr>whole_program(</span><b><span style="font-size:9.0pt;font-family:"Menlo",serif;color:navy">true</span></b><span style="font-size:9.0pt;font-family:"Menlo",serif;color:black">);"</span><span style="font-family:"Arial",sans-serif"> it
can work for soot but not for FlowDroid. I need to load all the bodies level classes but I am getting this message. <u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif"><u></u> <u></u></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif">"The data flow analysis has failed. Error message: This operation requires resolving level BODIES but android.support.v7.app.AppComp<wbr>atActivity is at resolving level SIGNATURES<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif">If you are extending Soot, try to add the following call before calling soot.Main.main(..):<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif">Scene.v().addBasicClass(androi<wbr>d.support.v7.app.AppCompatActi<wbr>vity,BODIES);<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif">Otherwise, try whole-program mode (-w)."<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif"><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif"><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif">Thanks,<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif">Umar<u></u><u></u></span></p>
</div>
</div>
</div>
</div></div></div>
</div>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>