<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Helvetica;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:Helvetica;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Sprechblasentext Zchn";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
p.yiv6684757301msoacetate, li.yiv6684757301msoacetate, div.yiv6684757301msoacetate
        {mso-style-name:yiv6684757301msoacetate;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msonormal, li.yiv6684757301msonormal, div.yiv6684757301msonormal
        {mso-style-name:yiv6684757301msonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msochpdefault, li.yiv6684757301msochpdefault, div.yiv6684757301msochpdefault
        {mso-style-name:yiv6684757301msochpdefault;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msonormal1, li.yiv6684757301msonormal1, div.yiv6684757301msonormal1
        {mso-style-name:yiv6684757301msonormal1;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msochpdefault1, li.yiv6684757301msochpdefault1, div.yiv6684757301msochpdefault1
        {mso-style-name:yiv6684757301msochpdefault1;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msonormal2, li.yiv6684757301msonormal2, div.yiv6684757301msonormal2
        {mso-style-name:yiv6684757301msonormal2;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msoacetate1, li.yiv6684757301msoacetate1, div.yiv6684757301msoacetate1
        {mso-style-name:yiv6684757301msoacetate1;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msochpdefault2, li.yiv6684757301msochpdefault2, div.yiv6684757301msochpdefault2
        {mso-style-name:yiv6684757301msochpdefault2;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msonormal11, li.yiv6684757301msonormal11, div.yiv6684757301msonormal11
        {mso-style-name:yiv6684757301msonormal11;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msochpdefault11, li.yiv6684757301msochpdefault11, div.yiv6684757301msochpdefault11
        {mso-style-name:yiv6684757301msochpdefault11;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msonormal3, li.yiv6684757301msonormal3, div.yiv6684757301msonormal3
        {mso-style-name:yiv6684757301msonormal3;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msoacetate2, li.yiv6684757301msoacetate2, div.yiv6684757301msoacetate2
        {mso-style-name:yiv6684757301msoacetate2;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msonormal4, li.yiv6684757301msonormal4, div.yiv6684757301msonormal4
        {mso-style-name:yiv6684757301msonormal4;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msochpdefault3, li.yiv6684757301msochpdefault3, div.yiv6684757301msochpdefault3
        {mso-style-name:yiv6684757301msochpdefault3;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msonormal12, li.yiv6684757301msonormal12, div.yiv6684757301msonormal12
        {mso-style-name:yiv6684757301msonormal12;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msochpdefault12, li.yiv6684757301msochpdefault12, div.yiv6684757301msochpdefault12
        {mso-style-name:yiv6684757301msochpdefault12;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msonormal21, li.yiv6684757301msonormal21, div.yiv6684757301msonormal21
        {mso-style-name:yiv6684757301msonormal21;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msoacetate11, li.yiv6684757301msoacetate11, div.yiv6684757301msoacetate11
        {mso-style-name:yiv6684757301msoacetate11;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msochpdefault21, li.yiv6684757301msochpdefault21, div.yiv6684757301msochpdefault21
        {mso-style-name:yiv6684757301msochpdefault21;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msonormal111, li.yiv6684757301msonormal111, div.yiv6684757301msonormal111
        {mso-style-name:yiv6684757301msonormal111;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msochpdefault111, li.yiv6684757301msochpdefault111, div.yiv6684757301msochpdefault111
        {mso-style-name:yiv6684757301msochpdefault111;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.yiv6684757301msohyperlink
        {mso-style-name:yiv6684757301msohyperlink;}
span.yiv6684757301msohyperlinkfollowed
        {mso-style-name:yiv6684757301msohyperlinkfollowed;}
span.yiv6684757301msohyperlink1
        {mso-style-name:yiv6684757301msohyperlink1;}
span.yiv6684757301msohyperlinkfollowed1
        {mso-style-name:yiv6684757301msohyperlinkfollowed1;}
span.yiv6684757301msohyperlink21
        {mso-style-name:yiv6684757301msohyperlink21;}
span.yiv6684757301msohyperlinkfollowed21
        {mso-style-name:yiv6684757301msohyperlinkfollowed21;}
span.yiv6684757301msohyperlink111
        {mso-style-name:yiv6684757301msohyperlink111;}
span.yiv6684757301msohyperlinkfollowed111
        {mso-style-name:yiv6684757301msohyperlinkfollowed111;}
span.yiv6684757301e-mailformatvorlage17111
        {mso-style-name:yiv6684757301e-mailformatvorlage17111;}
span.yiv6684757301e-mailformatvorlage2711
        {mso-style-name:yiv6684757301e-mailformatvorlage2711;}
span.yiv6684757301e-mailformatvorlage391
        {mso-style-name:yiv6684757301e-mailformatvorlage391;}
span.yiv6684757301e-mailformatvorlage56
        {mso-style-name:yiv6684757301e-mailformatvorlage56;}
p.yiv6684757301msonormal5, li.yiv6684757301msonormal5, div.yiv6684757301msonormal5
        {mso-style-name:yiv6684757301msonormal5;
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.yiv6684757301msohyperlink2
        {mso-style-name:yiv6684757301msohyperlink2;
        color:blue;
        text-decoration:underline;}
span.yiv6684757301msohyperlinkfollowed2
        {mso-style-name:yiv6684757301msohyperlinkfollowed2;
        color:purple;
        text-decoration:underline;}
p.yiv6684757301msoacetate3, li.yiv6684757301msoacetate3, div.yiv6684757301msoacetate3
        {mso-style-name:yiv6684757301msoacetate3;
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msonormal6, li.yiv6684757301msonormal6, div.yiv6684757301msonormal6
        {mso-style-name:yiv6684757301msonormal6;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msochpdefault4, li.yiv6684757301msochpdefault4, div.yiv6684757301msochpdefault4
        {mso-style-name:yiv6684757301msochpdefault4;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msonormal13, li.yiv6684757301msonormal13, div.yiv6684757301msonormal13
        {mso-style-name:yiv6684757301msonormal13;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msochpdefault13, li.yiv6684757301msochpdefault13, div.yiv6684757301msochpdefault13
        {mso-style-name:yiv6684757301msochpdefault13;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msonormal22, li.yiv6684757301msonormal22, div.yiv6684757301msonormal22
        {mso-style-name:yiv6684757301msonormal22;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msoacetate12, li.yiv6684757301msoacetate12, div.yiv6684757301msoacetate12
        {mso-style-name:yiv6684757301msoacetate12;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msochpdefault22, li.yiv6684757301msochpdefault22, div.yiv6684757301msochpdefault22
        {mso-style-name:yiv6684757301msochpdefault22;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msonormal112, li.yiv6684757301msonormal112, div.yiv6684757301msonormal112
        {mso-style-name:yiv6684757301msonormal112;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msochpdefault112, li.yiv6684757301msochpdefault112, div.yiv6684757301msochpdefault112
        {mso-style-name:yiv6684757301msochpdefault112;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msonormal31, li.yiv6684757301msonormal31, div.yiv6684757301msonormal31
        {mso-style-name:yiv6684757301msonormal31;
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.yiv6684757301msohyperlink11
        {mso-style-name:yiv6684757301msohyperlink11;
        color:blue;
        text-decoration:underline;}
span.yiv6684757301msohyperlinkfollowed11
        {mso-style-name:yiv6684757301msohyperlinkfollowed11;
        color:purple;
        text-decoration:underline;}
p.yiv6684757301msoacetate21, li.yiv6684757301msoacetate21, div.yiv6684757301msoacetate21
        {mso-style-name:yiv6684757301msoacetate21;
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msonormal41, li.yiv6684757301msonormal41, div.yiv6684757301msonormal41
        {mso-style-name:yiv6684757301msonormal41;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msochpdefault31, li.yiv6684757301msochpdefault31, div.yiv6684757301msochpdefault31
        {mso-style-name:yiv6684757301msochpdefault31;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msonormal121, li.yiv6684757301msonormal121, div.yiv6684757301msonormal121
        {mso-style-name:yiv6684757301msonormal121;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msochpdefault121, li.yiv6684757301msochpdefault121, div.yiv6684757301msochpdefault121
        {mso-style-name:yiv6684757301msochpdefault121;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msonormal211, li.yiv6684757301msonormal211, div.yiv6684757301msonormal211
        {mso-style-name:yiv6684757301msonormal211;
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.yiv6684757301msohyperlink211
        {mso-style-name:yiv6684757301msohyperlink211;
        color:blue;
        text-decoration:underline;}
span.yiv6684757301msohyperlinkfollowed211
        {mso-style-name:yiv6684757301msohyperlinkfollowed211;
        color:purple;
        text-decoration:underline;}
p.yiv6684757301msoacetate111, li.yiv6684757301msoacetate111, div.yiv6684757301msoacetate111
        {mso-style-name:yiv6684757301msoacetate111;
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msochpdefault211, li.yiv6684757301msochpdefault211, div.yiv6684757301msochpdefault211
        {mso-style-name:yiv6684757301msochpdefault211;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.yiv6684757301msonormal1111, li.yiv6684757301msonormal1111, div.yiv6684757301msonormal1111
        {mso-style-name:yiv6684757301msonormal1111;
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.yiv6684757301msohyperlink1111
        {mso-style-name:yiv6684757301msohyperlink1111;
        color:blue;
        text-decoration:underline;}
span.yiv6684757301msohyperlinkfollowed1111
        {mso-style-name:yiv6684757301msohyperlinkfollowed1111;
        color:purple;
        text-decoration:underline;}
span.yiv6684757301e-mailformatvorlage171111
        {mso-style-name:yiv6684757301e-mailformatvorlage171111;
        color:#1F497D;}
p.yiv6684757301msochpdefault1111, li.yiv6684757301msochpdefault1111, div.yiv6684757301msochpdefault1111
        {mso-style-name:yiv6684757301msochpdefault1111;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:10.0pt;
        font-family:"Times New Roman","serif";}
span.yiv6684757301e-mailformatvorlage27111
        {mso-style-name:yiv6684757301e-mailformatvorlage27111;
        color:#1F497D;}
span.yiv6684757301e-mailformatvorlage3911
        {mso-style-name:yiv6684757301e-mailformatvorlage3911;
        color:#1F497D;}
span.yiv6684757301e-mailformatvorlage561
        {mso-style-name:yiv6684757301e-mailformatvorlage561;
        color:#1F497D;}
span.E-MailFormatvorlage84
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.SprechblasentextZchn
        {mso-style-name:"Sprechblasentext Zchn";
        mso-style-priority:99;
        mso-style-link:Sprechblasentext;
        font-family:"Tahoma","sans-serif";}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=DE link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Hi Marjan,<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>The code you sent is incomplete. Again: It’s hard to tell what exactly happens if you send no code at all or only snippets. If you construct your entry point on your own (what does it look like, btw.?), you might not need FlowDroid’s entry point generator. The whole point of FlowDroid’s generator is to save you the effort of building an entry point on your own.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Anyway, from your code it looks like you only have a single entry point. In this case, your app will look like one continuous program to Soot and you will see a call graph for all of it together.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Now I’m confused. What’s your concrete problem? Your code requires an external entry point (effort you could have saved with FlowDroid’s entry point creator), but it should give you something similar in the end.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Best regards,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'> Steven<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><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"'> Marjan Radi [mailto:marjan.radi@yahoo.com] <br><b>Gesendet:</b> Donnerstag, 9. Juli 2015 22:02<br><b>An:</b> Steven Arzt; 'Soot List'<br><b>Betreff:</b> Re: AW: AW: AW: [Soot-list] application Control Flow Graph<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><div id="yui_3_16_0_1_1435795709338_191291"><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Courier New";color:black'>Dear Steven,<o:p></o:p></span></p></div><div id="yui_3_16_0_1_1435795709338_191291"><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Courier New";color:black'><o:p> </o:p></span></p></div><div id="yui_3_16_0_1_1435795709338_191291"><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Courier New";color:black'>Thanks for your reply. <o:p></o:p></span></p></div><div id="yui_3_16_0_1_1435795709338_191291"><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Courier New";color:black'><o:p> </o:p></span></p></div><div id="yui_3_16_0_1_1435795709338_191291"><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Courier New";color:black'>Since I did not use FlowDroid, I added method "APEGENERATED_ENTRY_POINT()" into the application which includes all the methods that I need to analyze. Then I added the following code to my analysis program:<o:p></o:p></span></p></div><div id="yui_3_16_0_1_1435795709338_191291"><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Courier New";color:black'><o:p> </o:p></span></p></div><div id="yui_3_16_0_1_1435795709338_195364"><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Courier New";color:black'>SootClass c = Scene.v().forceResolve("com.example.marjanradi.npr_test4.MainActivity", SootClass.BODIES);<o:p></o:p></span></p></div><div id="yui_3_16_0_1_1435795709338_195358"><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Courier New";color:black'>List<SootMethod> entryPoints = new ArrayList<SootMethod>();<o:p></o:p></span></p></div><div id="yui_3_16_0_1_1435795709338_195360"><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Courier New";color:black'>entryPoints.add(c.getMethodByName("APEGENERATED_ENTRY_POINT"));<o:p></o:p></span></p></div><div id="yui_3_16_0_1_1435795709338_195361"><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Courier New";color:black'>Scene.v().setEntryPoints(entryPoints);<o:p></o:p></span></p></div><div id="yui_3_16_0_1_1435795709338_195361"><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Courier New";color:black'><o:p> </o:p></span></p></div><div id="yui_3_16_0_1_1435795709338_195361"><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Courier New";color:black'><o:p> </o:p></span></p></div><div id="yui_3_16_0_1_1435795709338_195361"><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Courier New";color:black'>My question is that, Can I use FlowDroid to construct the Dummy Main() and then add async methods to that? <o:p></o:p></span></p></div><div id="yui_3_16_0_1_1435795709338_195361"><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Courier New";color:black'><o:p> </o:p></span></p></div><div id="yui_3_16_0_1_1435795709338_195361"><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Courier New";color:black'><o:p> </o:p></span></p></div><div id="yui_3_16_0_1_1435795709338_195361"><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Courier New";color:black'>Best Regards,<o:p></o:p></span></p></div><div id="yui_3_16_0_1_1435795709338_191762"><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Courier New";color:black'>Marjan<o:p></o:p></span></p></div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Courier New";color:black'><o:p> </o:p></span></p><div><p class=MsoNormal style='margin-bottom:12.0pt;background:white'><span style='font-size:10.0pt;font-family:"Courier New";color:black'><o:p> </o:p></span></p></div><div><div><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black'>On Thursday, July 9, 2015 9:54 AM, Steven Arzt <<a href="mailto:Steven.Arzt@cased.de">Steven.Arzt@cased.de</a>> wrote:</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div><p class=MsoNormal style='margin-bottom:12.0pt;background:white'><span style='font-family:"Helvetica","sans-serif";color:black'><o:p> </o:p></span></p><div><div id=yiv6684757301><div><div><div><p class=MsoNormal style='background:white'><span style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'>Hi Marjan,</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div><div><p class=MsoNormal style='background:white'><span style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div><div><p class=MsoNormal style='background:white'><span lang=EN-US style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'>This brings us back to the original question: How do you construct this custom entry point at the moment? If you do it properly (for instance using the SetupApplication class in FlowDroid), SPARK will be able to run and you can use the JimpleBasedInterproceduralCFG class to iterate over the units in your program.</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div><div><p class=MsoNormal style='background:white'><span lang=EN-US style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div><div><p class=MsoNormal style='background:white'><span lang=EN-US style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'>If something doesn’t work, please provide the actual code you are using and specify what you still need or what doesn’t work. Otherwise it’s hard to tell what the real problem is.</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div><div><p class=MsoNormal style='background:white'><span lang=EN-US style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div><div><p class=MsoNormal style='background:white'><span lang=EN-US style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'>Best regards,</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div><div><p class=MsoNormal style='background:white'><span lang=EN-US style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'> Steven</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div><div><p class=MsoNormal style='background:white'><span lang=EN-US style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div><div id=yiv6684757301yqt00665><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><div><p class=MsoNormal style='background:white'><b><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'>Von:</span></b><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'> Marjan Radi [<a href="mailto:marjan.radi@yahoo.com">mailto:marjan.radi@yahoo.com</a>] <br><b>Gesendet:</b> Donnerstag, 9. Juli 2015 16:50<br><b>An:</b> Steven Arzt; Soot List<br><b>Betreff:</b> Re: AW: AW: [Soot-list] application Control Flow Graph</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div><div><p class=MsoNormal style='background:white'><span style='font-family:"Helvetica","sans-serif";color:black'> <o:p></o:p></span></p></div><div><div id="yiv6684757301yui_3_16_0_1_1436416321149_74845"><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'>Dear Steven,</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_74845"><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_74845"><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'>After initializing soot with the customized entry point, I run the SPARK analysis. Is SPARK analysis uses FlowDroid for constructing the dummy main? If it is correct so, the blocks of the CFG must have an order.</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_74845"><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_74845"><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'>Best Regards,</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_74845"><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'>Marjan</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_74907"><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_74847"><div id="yiv6684757301yui_3_16_0_1_1426188032239_18320"><div id="yiv6684757301yui_3_16_0_1_1426188032239_71660"><div><p class=MsoNormal style='background:white'><span style='font-family:"Helvetica","sans-serif";color:black'> <o:p></o:p></span></p></div></div></div></div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div><div><div style='margin-bottom:12.0pt'><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div><div><div><div><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'>On Thursday, July 9, 2015 9:25 AM, Steven Arzt <<a href="mailto:Steven.Arzt@cased.de" target="_blank">Steven.Arzt@cased.de</a>> wrote:</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div><div style='margin-bottom:12.0pt'><p class=MsoNormal style='background:white'><span style='font-family:"Helvetica","sans-serif";color:black'> <o:p></o:p></span></p></div><div><div id=yiv6684757301><div><div><div><div><p class=MsoNormal style='background:white'><span lang=EN-US style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'>Hi Marjan,</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div><div><div><p class=MsoNormal style='background:white'><span lang=EN-US style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div><div><div><p class=MsoNormal style='background:white'><span lang=EN-US style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'>If you do not use FlowDroid to construct the dummy main method at the moment, what do you use for constructing the callgraph? SPARK definitely needs a dummy main method, that’s why I was under the impression that you use FlowDroid to construct it. The only other alternative I can think of is to use CHA (which is horrible imprecise). In the latter case, the JimpleBasedInterproceduralCFG should not order the entry points at all, but keep them as totally separate graphs.</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div><div><div><p class=MsoNormal style='background:white'><span lang=EN-US style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div><div><div><p class=MsoNormal style='background:white'><span lang=EN-US style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'>Best regards,</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div><div><div><p class=MsoNormal style='background:white'><span lang=EN-US style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'> Steven</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div><div><div><p class=MsoNormal style='background:white'><span lang=EN-US style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div><div id=yiv6684757301yqt21174><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><div><div><p class=MsoNormal style='background:white'><b><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'>Von:</span></b><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'> Marjan Radi [<a href="mailto:marjan.radi@yahoo.com" target="_blank">mailto:marjan.radi@yahoo.com</a>] <br><b>Gesendet:</b> Donnerstag, 9. Juli 2015 16:20<br><b>An:</b> Steven Arzt; 'Soot List'<br><b>Betreff:</b> Re: AW: [Soot-list] application Control Flow Graph</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div></div><div><div><p class=MsoNormal style='background:white'><span style='font-family:"Helvetica","sans-serif";color:black'> <o:p></o:p></span></p></div></div><div><div id=yiv6684757301><div id="yiv6684757301yui_3_16_0_1_1436416321149_43279"><div id="yiv6684757301yui_3_16_0_1_1436416321149_43278"><div id="yiv6684757301yui_3_16_0_1_1436416321149_36818"><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'>Dear Steven,</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_36818"><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_36818"><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'>Thanks for your reply.</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_36818"><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_36818"><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'>Since the application that I want to analyze has AsyncTasks, I have customized the entry points. I did not use FlowDroid. So, I wanted to know without using FlowDroid, dose "JimpleBasedInterproceduralCFG" consider any order between methods to construct the CFG?</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_37182"><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_37176"><div id="yiv6684757301yui_3_16_0_1_1426188032239_18320"><div id="yiv6684757301yui_3_16_0_1_1426188032239_71660"><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'>Marjan,</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div><div id="yiv6684757301yui_3_16_0_1_1426188032239_71660"><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'>Best Regards</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div></div></div><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_45223"><div style='margin-bottom:12.0pt'><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_45410"><div id="yiv6684757301yui_3_16_0_1_1436416321149_45409"><div id="yiv6684757301yui_3_16_0_1_1436416321149_45408"><div id="yiv6684757301yui_3_16_0_1_1436416321149_45407"><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'>On Thursday, July 9, 2015 2:56 AM, Steven Arzt <<a href="mailto:Steven.Arzt@cased.de" target="_blank">Steven.Arzt@cased.de</a>> wrote:</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div><div style='margin-bottom:12.0pt'><div><p class=MsoNormal style='background:white'><span style='font-family:"Helvetica","sans-serif";color:black'> <o:p></o:p></span></p></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_45646"><div id=yiv6684757301><div id="yiv6684757301yui_3_16_0_1_1436416321149_45645"><div id="yiv6684757301yui_3_16_0_1_1436416321149_45644"><div id="yiv6684757301yui_3_16_0_1_1436416321149_46223"><div><div><p class=MsoNormal style='background:white'><span style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'>Hi Marjan,</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_46179"><div><div><p class=MsoNormal style='background:white'><span style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_45643"><div><div><p class=MsoNormal style='background:white'><span lang=EN-US style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'>I think we first have to sort out what you actually need. For an Android app, tools like FlowDroid first construct a dummy main method which simulates the Android lifecycle. This method, for instance, first calls onCreate() on an activity and then onResume(), because this is what the Android OS would do if the app was run on an emulator or a real device. Therefore, it’s correct for the analysis to first run through onCreate() and then through onResume().</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_45696"><div><div><p class=MsoNormal style='background:white'><span lang=EN-US style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_45699"><div><div><p class=MsoNormal style='background:white'><span lang=EN-US style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'>The concept of an “enty point” doesn’t really exist in Android; there is none. Instead, apps are much more tightly coupled with the OS. You might even consider an Android app to be a plugin to the OS. The app derives classes from OS classes and overrides methods which are then called by the OS at runtime. Since most program analysis frameworks, however, depend on an entry point such as the classical main() method, we fake one that emulates this plugin model.</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_47578"><div><div><p class=MsoNormal style='background:white'><span lang=EN-US style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_46176"><div><div><p class=MsoNormal style='background:white'><span lang=EN-US style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'>Best regards,</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_46221"><div><div><p class=MsoNormal style='background:white'><span lang=EN-US style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'> Steven</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_46174"><div><div><p class=MsoNormal style='background:white'><span lang=EN-US style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div><div id=yiv6684757301yqt50409><div id="yiv6684757301yui_3_16_0_1_1436416321149_46172"><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm' id="yiv6684757301yui_3_16_0_1_1436416321149_46171"><div id="yiv6684757301yui_3_16_0_1_1436416321149_46170"><div><div><p class=MsoNormal style='background:white'><b><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'>Von:</span></b><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'> <a href="mailto:soot-list-bounces@CS.McGill.CA" target="_blank">soot-list-bounces@CS.McGill.CA</a> [<a href="mailto:soot-list-bounces@CS.McGill.CA" target="_blank">mailto:soot-list-bounces@CS.McGill.CA</a>] <b>Im Auftrag von </b>Marjan Radi<br><b>Gesendet:</b> Donnerstag, 9. Juli 2015 06:55<br><b>An:</b> Steven Arzt; 'Soot List'<br><b>Betreff:</b> Re: [Soot-list] application Control Flow Graph</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_45701"><div><div><p class=MsoNormal style='background:white'><span style='font-family:"Helvetica","sans-serif";color:black'> <o:p></o:p></span></p></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_45705"><div id="yiv6684757301yui_3_16_0_1_1436416321149_19920"><div id="yiv6684757301yui_3_16_0_1_1436416321149_46219"><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'>Dear Steven,</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_19920"><div><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_19920"><div><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'>Thank you for your reply. I have two questions:</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_19920"><div id="yiv6684757301yui_3_16_0_1_1436416321149_47569"><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_19920"><div id="yiv6684757301yui_3_16_0_1_1436416321149_46168"><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'>1- I have tried to use "JimpleBasedInterproceduralCFG", 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. I looked at <a href="https://github.com/Sable/soot/tree/develop/src/soot/jimple/toolkits/ide/exampleproblems" target="_blank" id="yiv6684757301yui_3_16_0_1_1436416321149_21661"><span style='border:none windowtext 1.0pt;padding:0cm;text-decoration:none'>https://github.com/Sable/soot/tree/develop/src/soot/jimple/toolkits/ide/exampleproblems</span></a>, but it could not help me. Is there any example that uses this class which I can look at to do my implementation?</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_19920"><div id="yiv6684757301yui_3_16_0_1_1436416321149_47571"><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_19920"><div id="yiv6684757301yui_3_16_0_1_1436416321149_45704"><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'>2- I want to construct the android applications' CFG and they have multiple entry points. I think "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 "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><span style='font-family:"Helvetica","sans-serif";color:black'>onCreate() and onResume() are both program entry points).<o:p></o:p></span></p></div></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_19920"><div id="yiv6684757301yui_3_16_0_1_1436416321149_47576"><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_19920"><div id="yiv6684757301yui_3_16_0_1_1436416321149_47573"><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'>Best Regards,</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_19920"><div id="yiv6684757301yui_3_16_0_1_1436416321149_45708"><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'>Marjan</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div></div><div><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div><div><div style='margin-bottom:12.0pt'><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_46190"><div id="yiv6684757301yui_3_16_0_1_1436416321149_46189"><div id="yiv6684757301yui_3_16_0_1_1436416321149_46188"><div><div><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'>On Wednesday, July 8, 2015 4:10 AM, Steven Arzt <<a href="mailto:Steven.Arzt@cased.de" target="_blank">Steven.Arzt@cased.de</a>> wrote:</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div></div><div style='margin-bottom:12.0pt'><div><div><p class=MsoNormal style='background:white'><span style='font-family:"Helvetica","sans-serif";color:black'> <o:p></o:p></span></p></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_46187"><div id=yiv6684757301><div id="yiv6684757301yui_3_16_0_1_1436416321149_46186"><div id="yiv6684757301yui_3_16_0_1_1436416321149_46185"><div><div><div><div><p class=MsoNormal style='background:white'><span style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'>Hi Marjan,</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div></div><div><div><div><div><p class=MsoNormal style='background:white'><span style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_46202"><div id="yiv6684757301yui_3_16_0_1_1436416321149_46201"><div><div><p class=MsoNormal style='background:white'><span lang=EN-US style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'>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><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_46205"><div id="yiv6684757301yui_3_16_0_1_1436416321149_46204"><div><div><p class=MsoNormal style='background:white'><span lang=EN-US style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div></div><div><div><div><div><p class=MsoNormal style='background:white'><span lang=EN-US style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'>Best regards,</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_46208"><div id="yiv6684757301yui_3_16_0_1_1436416321149_46207"><div><div><p class=MsoNormal style='background:white'><span lang=EN-US style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'> Steven</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_46184"><div id="yiv6684757301yui_3_16_0_1_1436416321149_46183"><div><div><p class=MsoNormal style='background:white'><span lang=EN-US style='font-size:11.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_46199"><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm' id="yiv6684757301yui_3_16_0_1_1436416321149_46198"><div id="yiv6684757301yui_3_16_0_1_1436416321149_46197"><div id="yiv6684757301yui_3_16_0_1_1436416321149_46196"><div><div><p class=MsoNormal style='background:white'><b><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'>Von:</span></b><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'> <a href="mailto:soot-list-bounces@CS.McGill.CA" target="_blank">soot-list-bounces@CS.McGill.CA</a> [<a href="mailto:soot-list-bounces@CS.McGill.CA" target="_blank">mailto:soot-list-bounces@CS.McGill.CA</a>] <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><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div></div></div></div><div><div><div><div><p class=MsoNormal style='background:white'><span style='font-family:"Helvetica","sans-serif";color:black'> <o:p></o:p></span></p></div></div></div></div><div id="yiv6684757301yui_3_16_0_1_1436416321149_46194"><div id="yiv6684757301yui_3_16_0_1_1435795709338_29196"><div><div><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'>Hi,</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div></div></div><div id="yiv6684757301yui_3_16_0_1_1435795709338_29196"><div><div><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div></div></div><div id="yiv6684757301yui_3_16_0_1_1435795709338_29196"><div><div><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";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 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-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div></div></div><div id="yiv6684757301yui_3_16_0_1_1435795709338_29342"><div id="yiv6684757301yui_3_16_0_1_1436416321149_46193"><div id="yiv6684757301yui_3_16_0_1_1436416321149_46192"><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'>I would be appreciated if you could give me an idea about how can I do this.</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div></div></div><div id="yiv6684757301yui_3_16_0_1_1435795709338_29263"><div id="yiv6684757301yui_3_16_0_1_1436416321149_46213"><div id="yiv6684757301yui_3_16_0_1_1436416321149_46212"><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'> </span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div></div></div><div id="yiv6684757301yui_3_16_0_1_1435795709338_29175"><div id="yiv6684757301yui_3_16_0_1_1426188032239_18320"><div id="yiv6684757301yui_3_16_0_1_1426188032239_71660"><div><div><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'>Best Regards,</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div></div></div><div id="yiv6684757301yui_3_16_0_1_1426188032239_71660"><div><div><div><div><p class=MsoNormal style='background:white'><span style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'>Marjan</span><span style='font-family:"Helvetica","sans-serif";color:black'><o:p></o:p></span></p></div></div></div></div></div></div></div></div></div></div></div><div style='margin-bottom:12.0pt'><div><div><p class=MsoNormal style='background:white'><span style='font-family:"Helvetica","sans-serif";color:black'> <o:p></o:p></span></p></div></div></div></div></div></div></div></div></div></div></div></div><div style='margin-bottom:12.0pt'><div><p class=MsoNormal style='background:white'><span style='font-family:"Helvetica","sans-serif";color:black'> <o:p></o:p></span></p></div></div></div></div></div></div></div></div></div></div></div><div style='margin-bottom:12.0pt'><p class=MsoNormal style='background:white'><span style='font-family:"Helvetica","sans-serif";color:black'> <o:p></o:p></span></p></div></div></div></div></div></div></div></div></div></div><p class=MsoNormal style='margin-bottom:12.0pt;background:white'><span style='font-family:"Helvetica","sans-serif";color:black'><o:p> </o:p></span></p></div></div></div></div></div></div></body></html>