<html><body><div style="color:#000; background-color:#fff; font-family:Courier New, courier, monaco, monospace, sans-serif;font-size:13px"><div id="yui_3_16_0_1_1436416321149_19920"><span id="yui_3_16_0_1_1436416321149_19933"><font id="yui_3_16_0_1_1436416321149_27355" size="2">Dear Steven,</font></span></div><div id="yui_3_16_0_1_1436416321149_19920"><font size="2"><br></font></div><div id="yui_3_16_0_1_1436416321149_19920" dir="ltr"><span id="yui_3_16_0_1_1436416321149_19943"><font size="2" id="yui_3_16_0_1_1436416321149_27374">Thank you for your reply. I have two questions:</font></span></div><div id="yui_3_16_0_1_1436416321149_19920" dir="ltr"><span><font size="2"><br></font></span></div><div id="yui_3_16_0_1_1436416321149_19920" dir="ltr"><font size="2" id="yui_3_16_0_1_1436416321149_27373"><span id="yui_3_16_0_1_1436416321149_22411">1- I have tried to use "</span><span class="" id="yui_3_16_0_1_1436416321149_20645">JimpleBasedInterproceduralCFG"</span><span class="" id="yui_3_16_0_1_1436416321149_20646">, but it is not clear to me how can I use its methods, how can I use it to construct the application CFG and how to iterate through this graph. </span><span class="" id="yui_3_16_0_1_1436416321149_22159">I looked at </span><a href="https://github.com/Sable/soot/tree/develop/src/soot/jimple/toolkits/ide/exampleproblems" target="_blank" rel="nofollow" class="" id="yui_3_16_0_1_1436416321149_21661" style="border: 0px; vertical-align: baseline; text-decoration: none; cursor: pointer;">https://github.com/Sable/soot/<wbr class="">tree/develop/src/soot/jimple/<wbr class="">toolkits/ide/exampleproblems</a>, but it could not help me<span id="yui_3_16_0_1_1436416321149_21663">. Is there any example that uses this class which I can look at to do my implementation?</span></font></div><div id="yui_3_16_0_1_1436416321149_19920" dir="ltr"><font size="2"><br></font></div><div id="yui_3_16_0_1_1436416321149_19920" dir="ltr"><font id="yui_3_16_0_1_1436416321149_27358" size="2" class=""><span id="yui_3_16_0_1_1436416321149_22914">2- I want to construct the android applications' CFG and they have multiple entry points. I think "</span><span class="" id="yui_3_16_0_1_1436416321149_23672">JimpleBasedInterproceduralCFG" combines the blocks of program entry points randomly and it dose not consider any specific order for the blocks of different methods in the program entry points. Am I correct? or is there any way that we can force </span><span id="yui_3_16_0_1_1436416321149_22914" class=""> "</span><span class="" id="yui_3_16_0_1_1436416321149_23672">JimpleBasedInterproceduralCFG" to consider a specific order on the sequence of its blocks (based on the program entry points)? For example, it first considers the blocks of onCreate() method and it is followed by the blocks of onResume() method (</span></font><span class="" id="yui_3_16_0_1_1436416321149_29583" style="font-size: small;">onCreate() and </span><span class="" id="yui_3_16_0_1_1436416321149_29839" style="font-size: small;">onResume() are both program entry points</span><span class="" id="yui_3_16_0_1_1436416321149_29584" style="font-size: small;">).</span></div><div id="yui_3_16_0_1_1436416321149_19920" dir="ltr"><br></div><div id="yui_3_16_0_1_1436416321149_19920" dir="ltr"><font size="2" id="yui_3_16_0_1_1436416321149_27794">Best Regards,</font></div><div id="yui_3_16_0_1_1436416321149_19920" dir="ltr"><font size="2" id="yui_3_16_0_1_1436416321149_27790">Marjan</font></div> <br><div class="qtdSeparateBR"><br><br></div><div class="yahoo_quoted" style="display: block;"> <div style="font-family: Courier New, courier, monaco, monospace, sans-serif; font-size: 13px;"> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 16px;"> <div dir="ltr"> <font size="2" face="Arial"> On Wednesday, July 8, 2015 4:10 AM, Steven Arzt <Steven.Arzt@cased.de> wrote:<br> </font> </div> <br><br> <div class="y_msg_container"><div id="yiv4874443086"><style><!--
#yiv4874443086
_filtered #yiv4874443086 {font-family:Calibri;panose-1:2 15 5 2 2 2 4 3 2 4;}
_filtered #yiv4874443086 {font-family:Tahoma;panose-1:2 11 6 4 3 5 4 4 2 4;}
#yiv4874443086
#yiv4874443086 p.yiv4874443086MsoNormal, #yiv4874443086 li.yiv4874443086MsoNormal, #yiv4874443086 div.yiv4874443086MsoNormal
        {margin:0cm;margin-bottom:.0001pt;font-size:12.0pt;font-family:"Times New Roman", "serif";}
#yiv4874443086 a:link, #yiv4874443086 span.yiv4874443086MsoHyperlink
        {color:blue;text-decoration:underline;}
#yiv4874443086 a:visited, #yiv4874443086 span.yiv4874443086MsoHyperlinkFollowed
        {color:purple;text-decoration:underline;}
#yiv4874443086 span.yiv4874443086E-MailFormatvorlage17
        {font-family:"Calibri", "sans-serif";color:#1F497D;}
#yiv4874443086 .yiv4874443086MsoChpDefault
        {font-size:10.0pt;}
_filtered #yiv4874443086 {margin:70.85pt 70.85pt 2.0cm 70.85pt;}
#yiv4874443086 div.yiv4874443086WordSection1
        {}
--></style><div><div class="yiv4874443086WordSection1"><div class="yiv4874443086MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri", "sans-serif";color:#1F497D;">Hi Marjan,</span></div><div class="yiv4874443086MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri", "sans-serif";color:#1F497D;"> </span></div><div class="yiv4874443086MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri", "sans-serif";color:#1F497D;">There is a class called JimpleBasedInterproceduralCFG that combines the intra-procedural control flow graph with a callgraph. This class is used inside the IFDS implementation to propagate data flow facts through the whole program. You can essentially navigate through the graph using getSuccsOf(). If you arrive at a call site, you can dispatch your analysis into the callees returned by getCalleesOfCallAt().</span></div><div class="yiv4874443086MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri", "sans-serif";color:#1F497D;"> </span></div><div class="yiv4874443086MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri", "sans-serif";color:#1F497D;">Best regards,</span></div><div class="yiv4874443086MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri", "sans-serif";color:#1F497D;"> Steven</span></div><div class="yiv4874443086MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri", "sans-serif";color:#1F497D;"> </span></div><div><div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm;"><div class="yiv4874443086MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma", "sans-serif";">Von:</span></b><span style="font-size:10.0pt;font-family:"Tahoma", "sans-serif";"> soot-list-bounces@CS.McGill.CA [mailto:soot-list-bounces@CS.McGill.CA] <b>Im Auftrag von </b>Marjan Radi<br><b>Gesendet:</b> Sonntag, 5. Juli 2015 21:31<br><b>An:</b> Soot List<br><b>Betreff:</b> [Soot-list] application Control Flow Graph</span></div></div></div><div class="yiv4874443086MsoNormal"> </div><div><div id="yiv4874443086yui_3_16_0_1_1435795709338_29196"><div class="yiv4874443086MsoNormal" style="background:white;"><span style="font-size:10.0pt;font-family:"Courier New";color:black;">Hi,</span></div></div><div id="yiv4874443086yui_3_16_0_1_1435795709338_29196"><div class="yiv4874443086MsoNormal" style="background:white;"><span style="font-size:10.0pt;font-family:"Courier New";color:black;"> </span></div></div><div id="yiv4874443086yui_3_16_0_1_1435795709338_29196"><div class="yiv4874443086MsoNormal" style="background:white;"><span style="font-size:10.0pt;font-family:"Courier New";color:black;">I am using soot for analyzing android programs. I wanted to identify all the methods which have called between every two program point, and each program point is the beginning of a method of the program. I tried to use </span><span style="font-size:10.0pt;font-family:"Courier New";color:#333333;">intra procedural data flow analysis, but soot constructs Control Flow Graph of each method separately and I can not construct the whole application control flow graph. </span><span style="font-size:10.0pt;font-family:"Courier New";color:black;"></span></div></div><div id="yiv4874443086yui_3_16_0_1_1435795709338_29342"><div class="yiv4874443086MsoNormal" style="background:white;"><span style="font-size:10.0pt;font-family:"Courier New";color:black;">I would be appreciated if you could give me an idea about how can I do this.</span></div></div><div id="yiv4874443086yui_3_16_0_1_1435795709338_29263"><div class="yiv4874443086MsoNormal" style="background:white;"><span style="font-size:10.0pt;font-family:"Courier New";color:black;"> </span></div></div><div id="yiv4874443086yui_3_16_0_1_1435795709338_29175"><div id="yiv4874443086yui_3_16_0_1_1426188032239_18320"><div id="yiv4874443086yui_3_16_0_1_1426188032239_71660"><div class="yiv4874443086MsoNormal" style="background:white;"><span style="font-size:10.0pt;color:black;">Best Regards,</span></div></div><div id="yiv4874443086yui_3_16_0_1_1426188032239_71660"><div class="yiv4874443086MsoNormal" style="background:white;"><span style="font-size:10.0pt;color:black;">Marjan</span></div></div></div></div></div></div></div></div><br><br></div> </div> </div> </div></div></body></html>