[Soot-list] Does Soot Modify an Input Class File's CFG at Runtime?

Choi, Sherman W ShermanChoi at ku.edu
Tue Jun 13 16:24:44 EDT 2017


Hello,                                

    I have a project where I am using Soot as a way to look at binary branches and applying heuristics through the BodyTransformer class to predict which ones will be used. I was recently shown another analysis tool that, when given a class file, would show how many times a  jump in a branch at a given index would be taken and not taken, but I  am worried about a few things. For the following questions, assume I have a class file called "Input.class" that I put into Soot to generate a  class file called "SootOutput.class".

    When I used "javac" to generate "Input.class" then used  "Input.class" as an argument into Soot to generate another class file "SootOutput.class", I notice that the files are not identical when I use "javap" to look at them. For example, some of the if branches are altered. This has me worried, because I need to be able to relate  SootOutput's branches to Input's branches to use my analysis from Soot with the analysis from the other tool.

-I am using transformations to analyze test inputs and building CFGs using the "BriefUnitGraph" class within Soot. When this is constructed, does it alter the CFG of the input class file in any way?
-If Soot does alter the CFG at run-time, are there any options to force it to maintain an isomorphic CFG?
-If Soot cannot maintain the same CFG as its input class, is  there anyway to somehow relate branches in "SootOutput.class" to those in "Input.class"? I know what indexes have a branch in the original class file, but I need a way to relate branches in the original file to the branches of the Soot CFG at run-time.

Thank You,
     Sherman Choi



More information about the Soot-list mailing list