[Soot-list] Generating Android APK CallFlowGraph

Modhi Alsobiehy m99m20 at hotmail.com
Mon Jul 7 21:51:03 EDT 2014


Problem resolved! some jars were added twice with different paths!

however now another error appeared!


Exception in thread "main" java.lang.RuntimeException: Callback definition file not found


at soot.jimple.infoflow.android.AnalyzeJimpleClass.loadAndroidCallbacks(Unknown Source)

at soot.jimple.infoflow.android.AnalyzeJimpleClass.<init>(Unknown Source)

at soot.jimple.infoflow.android.SetupApplication.calculateCallbackMethods(Unknown Source)

at soot.jimple.infoflow.android.SetupApplication.calculateSourcesSinksEntrypoints(Unknown Source)

at soot.jimple.infoflow.android.SetupApplication.calculateSourcesSinksEntrypoints(Unknown Source)

	at apkCFG.CFG.main(CFG.java:25)

I checked the classes and these methods don’t appear in the browser tab, I tried another nightly build jars and still having the same error!

any idea how to resolve this issue??

Thank you!






Sent from Windows Mail





From: Modhi Alsobeihy
Sent: ‎Saturday‎, ‎July‎ ‎5‎, ‎2014 ‎12‎:‎34‎ ‎PM
To: soot-list at CS.McGill.CA, soot-list at sable.mcgill.ca





Hi all,

I need to traverse the call flow graph of android apps( apk files).

I understand that I must set an entry point so to start, I tried the following code :




----------------------------------------------------------------------------------------------------


mport java.io.IOException;

import java.util.Collections;


import org.xmlpull.v1.XmlPullParserException;


import soot.PackManager;

import soot.Scene;

import soot.SootMethod;

import soot.jimple.infoflow.android.SetupApplication;

import soot.options.Options;


public class CFG {


	public CFG() {

	// TODO Auto-generated constructor stub

	}


	public static void main(String[] args) {

	// TODO Auto-generated method stub

	SetupApplication app = new SetupApplication("D:/AndroidADT/adt-bundle-windows-x86_64-20131030/sdk/platforms","D:/APKs/location.apk");



	try {

	app.calculateSourcesSinksEntrypoints("D:/FlowDroid/SourcesAndSinks.txt");

	} catch (IOException e) {

	// TODO Auto-generated catch block

	e.printStackTrace();

	} catch (XmlPullParserException e) {

	// TODO Auto-generated catch block

	e.printStackTrace();

}



soot.G.reset();



	Options.v().set_src_prec(Options.src_prec_apk);



	Options.v().set_process_dir(Collections.singletonList("D:/APKs/location.apk"));



	Options.v().set_android_jars("D:/AndroidADT/adt-bundle-windows-x86_64-20131030/sdk/platforms");



	Options.v().set_whole_program(true);



	Options.v().set_allow_phantom_refs(true);



	Options.v().set_output_format(Options.output_format_none);



	Options.v().setPhaseOption("cg.spark", "on");



Scene.v().loadNecessaryClasses(); 



SootMethod entryPoint = app.getEntryPointCreator().createDummyMain();



Options.v().set_main_class(entryPoint.getSignature());



Scene.v().setEntryPoints(Collections.singletonList(entryPoint));



	System.out.println(entryPoint.getActiveBody());



PackManager.v().runPacks();



	System.out.println(Scene.v().getCallGraph().size());



}


}

---------------------------------------------------------------------------------------------------------------------

Unfortunately, I am getting the following error:

Exception in thread "main" java.lang.NoClassDefFoundError: pxb/android/axml/NodeVisitor



at soot.jimple.infoflow.android.manifest.ProcessManifest.handle(Unknown Source)



at soot.jimple.infoflow.android.manifest.ProcessManifest.<init>(Unknown Source)



at soot.jimple.infoflow.android.manifest.ProcessManifest.<init>(Unknown Source)



at soot.jimple.infoflow.android.SetupApplication.calculateSourcesSinksEntrypoints(Unknown Source)



at soot.jimple.infoflow.android.SetupApplication.calculateSourcesSinksEntrypoints(Unknown Source)




	at apkCFG.CFG.main(CFG.java:25)



Caused by: java.lang.ClassNotFoundException: pxb.android.axml.NodeVisitor





at java.net.URLClassLoader$1.run(Unknown Source)



at java.net.URLClassLoader$1.run(Unknown Source)




	at java.security.AccessController.doPrivileged(Native Method)





at java.net.URLClassLoader.findClass(Unknown Source)



at java.lang.ClassLoader.loadClass(Unknown Source)



at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)



at java.lang.ClassLoader.loadClass(Unknown Source)



... 6 more





Any help or advise on how to do that would be deeply appreciated!

Thanx!!







Sent from Windows Mail
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20140708/6073084a/attachment-0003.html 
-------------- next part --------------
_______________________________________________
Soot-list mailing list
Soot-list at CS.McGill.CA
https://mailman.CS.McGill.CA/mailman/listinfo/soot-list


More information about the Soot-list mailing list