[Soot-list] application Control Flow Graph

Marjan Radi marjan.radi at yahoo.com
Thu Jul 9 00:55:06 EDT 2015


Dear Steven,
Thank you for your reply. I have two questions:
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 https://github.com/Sable/soot/tree/develop/src/soot/jimple/toolkits/ide/exampleproblems, but it could not help me. Is there any example that uses this class which I can look at to do my implementation?
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 (onCreate() and onResume() are both program entry points).
Best Regards,Marjan 


     On Wednesday, July 8, 2015 4:10 AM, Steven Arzt <Steven.Arzt at cased.de> wrote:
   

 <!--#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 {}-->Hi Marjan,  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().  Best regards,  Steven  Von: soot-list-bounces at CS.McGill.CA [mailto:soot-list-bounces at CS.McGill.CA] Im Auftrag von Marjan Radi
Gesendet: Sonntag, 5. Juli 2015 21:31
An: Soot List
Betreff: [Soot-list] application Control Flow Graph  Hi,  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. I would be appreciated if you could give me an idea about how can I do this. Best Regards,Marjan

  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20150709/e67141e9/attachment.html 


More information about the Soot-list mailing list