Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package doAnalysis;
- import java.util.*;
- import soot.*;
- import soot.jimple.toolkits.callgraph.*;
- import soot.options.Options;
- public class Copy_3_of_MyCallGraph extends AuxGraph {
- public static ArrayList<SootMethod> getAllMethods() {
- ArrayList<SootMethod> entrypoints = new ArrayList<SootMethod>();
- for (String klass : allClasses) {
- // Error here : allCLass ?
- // klass such as org.abc.MyClass
- Scene.v().forceResolve(klass, SootClass.SIGNATURES);
- SootClass soot_class = Scene.v().getSootClass(klass);
- // adding all non-abstract method as entrypoint
- for (SootMethod m : soot_class.getMethods()) {
- if (!m.isAbstract()) {
- entrypoints.add(m);
- }
- }
- }
- return entrypoints;
- }
- public static void main(String[] args) {
- Options.v().set_whole_program(true);
- // Options.v().set_process_dir(Arrays.asList(libDir)); //library dir
- Options.v().set_soot_classpath("../rt.jar:../jce.jar:.");
- // library dir along with rt.jar/jce.jar from JRE/JDK
- Scene.v().setEntryPoints(getAllMethods());
- Scene.v().loadNecessaryClasses();
- PackManager.v().getPack("wjtp").apply();
- PackManager.v().getPack("wjtp")
- .add(new Transform("wjtp.myTrans", new SceneTransformer() {
- @Override
- protected void internalTransform(String phaseName,
- Map options) {
- CHATransformer.v().transform();
- }
- }));
- SootClass soot_class = Scene.v()
- .getSootClass("java.lang.reflect.Field");
- SootMethod tgt = getMethod(soot_class, "void setAccessible(boolean)");
- CallGraph cg = Scene.v().getCallGraph();
- @SuppressWarnings("unchecked")
- Iterator<MethodOrMethodContext> source = new Sources(cg.edgesInto(tgt));
- while (source.hasNext()) {
- SootMethod src = (SootMethod) source.next();
- System.out.println(src);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment