Reputation: 1
I am new to soot. I tried this code but it has error.
public class Main {
private static final Body B = null;
public static void main(String[] args) {
// TODO Auto-generated method stub
final String apppath = "c:\\Users\\SHTAV3\\Desktop\\Myclass.jar";
soot.G.reset();
Options.v().set_process_dir(Collections.singletonList(apppath));
Options.v().set_allow_phantom_refs(true);
Options.v().set_prepend_classpath(true);
Options.v().set_validate(true);
Options.v().set_whole_program(true);
Options.v().set_app(true);
Options.v().set_src_prec(Options.src_prec_class);
Scene.v().loadNecessaryClasses();
SootClass appclass = Scene.v().loadClassAndSupport("Myclass");
appclass.setApplicationClass();
SootMethod m = appclass.getMethodByName("printOne");
ExceptionalUnitGraph g = new ExceptionalUnitGraph(B);
Body B = m.retrieveActiveBody();
VeryBusyExpressions an = new VeryBusyExpressions();
Iterator i = g.iterator();
while (i.hasNext()) {
Unit u = (Unit)i.next();
List IN = an.getBusyExpressionsBefore(u);
List OUT = an.getBusyExpressionsAfter(u);
}
PackManager.v().runPacks();
CallGraph cg = Scene.v().getCallGraph();
System.out.println(cg.toString());
}
errors:
Exception in thread "main" java.lang.RuntimeException: couldn't find method printOne(*) in Myclass
at soot.SootClass.getMethodByName(SootClass.java:549)
at analise.Main.main(Main.java:40)
my class name in jar file is myclass and my method name is printone cheers
Upvotes: 0
Views: 242