Advertisement
Guest User

Untitled

a guest
Apr 15th, 2013
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.19 KB | None | 0 0
  1. package callgraphs;
  2.  
  3. import java.util.*;
  4. import soot.*;
  5. import soot.jimple.toolkits.callgraph.*;
  6.  
  7. public class CallGraphExample {
  8.     public static void main(String[] args) {
  9.         List<String> argsList = new ArrayList<String>(Arrays.asList(args));
  10.         argsList.addAll(Arrays.asList(new String[] {
  11.                 "-w", "-main-class",
  12.                 "ToDo.FieldAccessible",// main-class
  13.                 "ToDo.FieldAccessible",// argument classes
  14.                 "java.lang.reflect.AccessibleObject" //
  15.         }));
  16.  
  17.         PackManager.v().getPack("wjtp")
  18.                 .add(new Transform("wjtp.myTrans", new SceneTransformer() {
  19.  
  20.                     @Override
  21.                     protected void internalTransform(String phaseName,
  22.                             Map options) {
  23.                         CHATransformer.v().transform();
  24.  
  25.                         SootMethod src = Scene.v().getSootClass("java.lang.reflect.AccessibleObject").getMethodByName("setAccessible");
  26.                         CallGraph cg = Scene.v().getCallGraph();
  27.  
  28.                         Iterator<MethodOrMethodContext> targets = new Targets(
  29.                                 cg.edgesInto(src));
  30.                         while (targets.hasNext()) {
  31.                             SootMethod tgt = (SootMethod) targets.next();
  32.                             System.out.println(src + " may call " + tgt);
  33.                         }
  34.                     }
  35.  
  36.                 }));
  37.  
  38.         args = argsList.toArray(new String[0]);
  39.  
  40.         soot.Main.main(args);
  41.     }
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement