[Soot-list] Generating Android APK CallFlowGraph

Eric Hoang mr.erichoang at gmail.com
Thu Mar 31 07:49:26 EDT 2016


Hi Steve and Lokesh,

My name is Eric, I am a newbie with Soot framework and FlowDroid. I found 
this conversations that you had solved the problem generate dot graph for 
APK. I follow your old code and receive error: 
DotGraph.getNode(DotGraph.java:56)
DotGraph.drawNode(DotGraph.java:65)

So, how did you solve this problem? May you share the final code of 
CFG.java and DotGraph.java for me?

Looking forward for your reply.

Thanks and regards,
Eric



On Sunday, July 6, 2014 at 1:34:49 AM UTC+8, Modhi Alsobiehy wrote:
>
> 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: https://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20160331/10ad16d7/attachment-0003.html 


More information about the Soot-list mailing list