[Soot-list] Generating Android APK CallFlowGraph

LOKESH JAIN lokeshjain92 at gmail.com
Fri Jul 18 12:04:13 EDT 2014


Hi,
A gentle reminder. Please reply fast. I need it for my research project.

Regards
Lokesh


On Thu, Jul 17, 2014 at 9:21 PM, LOKESH JAIN <lokeshjain92 at gmail.com> wrote:

> Thanks a lot Steven and Modhi. It worked.
>
> It is showing call graph in words. How can I graphically see the call
> graph for apk files as we see for java files??
>
> Regards
> Lokesh Jain
>
>
> On Thu, Jul 17, 2014 at 6:11 PM, Steven Arzt <Steven.Arzt at cased.de> wrote:
>
>> Hi Lokesh,
>>
>>
>>
>> It seems that you are missing the axml-2.0.jar library on your Java
>> classpath.
>>
>>
>>
>> Best regards,
>>
>>   Steven
>>
>>
>>
>> *Von:* soot-list-bounces at CS.McGill.CA [mailto:
>> soot-list-bounces at CS.McGill.CA] *Im Auftrag von *Modhi Alsobiehy
>> *Gesendet:* Donnerstag, 17. Juli 2014 14:39
>> *An:* LOKESH JAIN
>> *Cc:* soot-list at cs.mcgill.ca; soot-list at sable.mcgill.ca;
>> soot-list at googlegroups.com
>> *Betreff:* Re: [Soot-list] Generating Android APK CallFlowGraph
>>
>>
>>
>> Hi Lokesh,
>>
>>
>>
>> Open the folder of your project and add the call back file into it.
>>
>>
>>
>> -Best,
>>
>> Modhi
>>
>>
>> On Jul 17, 2014, at 12:03 PM, "LOKESH JAIN" <lokeshjain92 at gmail.com>
>> wrote:
>>
>> Hi all,
>>
>> Modhi, I am using your code for generating call graph for apk file. But,
>> I am getting 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 CFG.main(CFG.java:33)
>> Caused by: java.lang.ClassNotFoundException: pxb.android.axml.NodeVisitor
>>     at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
>>     at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
>>     at java.security.AccessController.doPrivileged(Native Method)
>>     at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
>>     at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
>>     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
>>     at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
>>     ... 6 more
>>
>> It's pretty much the same error that you were getting. Though I had
>> checked , there is no duplicate library added. Also there is already
>> AndroidCallbacks.txt in soot-infoflow-android, i haven't understood how to
>> add it into my project.
>> Any help would be appreciated. Thank You
>> Regards
>> Lokesh
>>
>>
>> On Saturday, 5 July 2014 23:04:49 UTC+5:30, 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: http://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20140718/c8ef2b17/attachment-0003.html 


More information about the Soot-list mailing list