Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package callgraphs;
- import java.util.*;
- import soot.*;
- import soot.jimple.toolkits.callgraph.*;
- public class CallGraphExample {
- public static void main(String[] args) {
- List<String> argsList = new ArrayList<String>(Arrays.asList(args));
- argsList.addAll(Arrays.asList(new String[] {
- "-w", "-main-class",
- "ToDo.FieldAccessible",// main-class
- "ToDo.FieldAccessible",// argument classes
- "java.lang.reflect.AccessibleObject" //
- }));
- PackManager.v().getPack("wjtp")
- .add(new Transform("wjtp.myTrans", new SceneTransformer() {
- @Override
- protected void internalTransform(String phaseName,
- Map options) {
- CHATransformer.v().transform();
- SootMethod src = Scene.v().getSootClass("java.lang.reflect.AccessibleObject").getMethodByName("setAccessible");
- CallGraph cg = Scene.v().getCallGraph();
- Iterator<MethodOrMethodContext> targets = new Targets(
- cg.edgesInto(src));
- while (targets.hasNext()) {
- SootMethod tgt = (SootMethod) targets.next();
- System.out.println(src + " may call " + tgt);
- }
- }
- }));
- args = argsList.toArray(new String[0]);
- soot.Main.main(args);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement