[Soot-list] Problem running the Android Instrumentation example

Arzt, Steven steven.arzt at sit.fraunhofer.de
Mon Apr 3 16:26:07 EDT 2017


Ok, I should not write e-mails when I’m in a hurry. The output option is called “dex”:

                -output-format dex

To get this sorted out, can you please send me the APK file? That should shorten the back and forth quite a bit.

From: Behnam [mailto:behnam at eecs.tufts.edu]
Sent: Monday, April 3, 2017 6:32 PM
To: Arzt, Steven <steven.arzt at sit.fraunhofer.de>; Bernhard Berger <berber at tzi.de>
Cc: soot-list at cs.mcgill.ca
Subject: Re: [Soot-list] Problem running the Android Instrumentation example




On 04/03/2017 02:47 AM, Arzt, Steven wrote:
Hi Behnam,

To get an instrumented APK file, you also need the –output-format apk parameter, otherwise Soot will cross-compile your code to Java bytecode.
The apk parameter is not recognized. Any alternative?

$behnam: /usr/lib/jvm/java-8-oracle/bin/java -jar soot-trunk.jar AndroidInstrument -cp . -src-prec apk -allow-phantom-refs -android-jars  /home/behnam/Android/Sdk/platforms/ -output-format apk -process-dir respdroid.apk
Invalid value apk given for option -output-format




Concerning the exception: Where did you get the platform JARs from? Do not use the ones in the Sable group on Github. Instead, use the ones provided with the official Android SDK that you can download from Google.
Same issue as before persists regardless of platform Jars path. I would highly appreciate it if someone would actually follow the Official Soot Android Instrumentation Example<https://github.com/Sable/soot/wiki/Instrumenting-Android-Apps-with-Soot> with a recent Android app (Java 8 basically), and share their command line.

Here's the state I'm stuck at:

behnam at behnam-Precision-T1600:~/tcal/responsiveness/soot/stable$ /usr/lib/jvm/java-8-oracle/bin/java -jar soot-trunk.jar AndroidInstrument -cp . -src-prec apk -allow-phantom-refs -android-jars /home/behnam/Android/Sdk/platforms -process-dir respdroid.apk
Soot started on Mon Apr 03 12:28:03 EDT 2017
Warning: java.lang.Throwable is a phantom class!
Warning: java.lang.Void is a phantom class!
Warning: java.lang.Float is a phantom class!
Warning: java.lang.Double is a phantom class!
Warning: java.lang.AssertionError is a phantom class!
Warning: java.lang.Integer is a phantom class!
Warning: java.lang.NullPointerException is a phantom class!
Warning: java.lang.Character is a phantom class!
Warning: java.lang.Long is a phantom class!
Warning: java.lang.Short is a phantom class!
Warning: java.lang.StringBuffer is a phantom class!
Warning: java.lang.Boolean is a phantom class!
Warning: java.lang.Class is a phantom class!
Warning: java.lang.Byte is a phantom class!
Warning: java.lang.NoClassDefFoundError is a phantom class!
Warning: java.lang.IndexOutOfBoundsException is a phantom class!
Warning: java.lang.StackOverflowError is a phantom class!
Warning: java.lang.invoke.LambdaMetafactory is a phantom class!
Warning: java.lang.Error is a phantom class!
Warning: java.lang.AbstractMethodError is a phantom class!
Warning: java.lang.ClassCastException is a phantom class!
Warning: java.lang.Runnable is a phantom class!
Warning: java.lang.VerifyError is a phantom class!
Warning: java.lang.NoSuchFieldError is a phantom class!
Warning: java.lang.IllegalMonitorStateException is a phantom class!
Warning: java.lang.Thread is a phantom class!
Warning: java.lang.UnknownError is a phantom class!
Warning: java.lang.InternalError is a phantom class!
Warning: java.lang.ArithmeticException is a phantom class!
Warning: java.lang.String is a phantom class!
Warning: java.lang.NegativeArraySizeException is a phantom class!
Warning: java.lang.ClassCircularityError is a phantom class!
Warning: java.lang.Cloneable is a phantom class!
Warning: java.lang.ref.Finalizer is a phantom class!
Warning: java.lang.LinkageError is a phantom class!
Warning: java.lang.IncompatibleClassChangeError is a phantom class!
Warning: java.lang.NoSuchMethodError is a phantom class!
Warning: java.lang.RuntimeException is a phantom class!
Warning: java.lang.ArrayIndexOutOfBoundsException is a phantom class!
Warning: java.lang.ThreadDeath is a phantom class!
Warning: java.io.Serializable is a phantom class!
Warning: java.lang.InstantiationError is a phantom class!
Warning: java.lang.IllegalAccessError is a phantom class!
Warning: java.lang.Object is a phantom class!
Warning: java.lang.ClassNotFoundException is a phantom class!
Warning: java.lang.ClassFormatError is a phantom class!
Warning: java.lang.UnsatisfiedLinkError is a phantom class!
Warning: java.lang.ArrayStoreException is a phantom class!
Warning: java.lang.ExceptionInInitializerError is a phantom class!
Warning: java.lang.OutOfMemoryError is a phantom class!
Exception in thread "main" java.lang.Error: Error: Failed to load java.util.Map$Entry.
    at soot.JastAddJ.PathPart.getCompilationUnit(PathPart.java:109)
    at soot.JastAddJ.Program.getCompilationUnit(Program.java:873)
    at soot.JastAddJ.Program.getLibCompilationUnit_compute(Program.java:1517)
    at soot.JastAddJ.Program.getLibCompilationUnit(Program.java:1500)
    at soot.JastAddJ.Program.lookupLibType_compute(Program.java:1465)
    at soot.JastAddJ.Program.lookupLibType(Program.java:1433)
    at soot.JastAddJ.Program.lookupType_compute(Program.java:1412)
    at soot.JastAddJ.Program.lookupType(Program.java:1393)
    at soot.JastAddJ.Program.Define_TypeDecl_lookupType(Program.java:1981)
    at soot.JastAddJ.ASTNode.Define_TypeDecl_lookupType(ASTNode.java:1657)
    at soot.JastAddJ.ASTNode.Define_TypeDecl_lookupType(ASTNode.java:1657)
    at soot.JastAddJ.ASTNode.Define_TypeDecl_lookupType(ASTNode.java:1657)
    at soot.JastAddJ.ASTNode.Define_TypeDecl_lookupType(ASTNode.java:1657)
    at soot.JastAddJ.Expr.lookupType(Expr.java:1186)
    at soot.JastAddJ.TypeAccess.decls_compute(TypeAccess.java:425)
    at soot.JastAddJ.TypeAccess.decls(TypeAccess.java:414)
    at soot.JastAddJ.TypeAccess.refined_TypeScopePropagation_TypeAccess_decl(TypeAccess.java:387)
    at soot.JastAddJ.TypeAccess.decl_compute(TypeAccess.java:460)
    at soot.JastAddJ.TypeAccess.decl(TypeAccess.java:452)
    at soot.JastAddJ.TypeAccess.type_compute(TypeAccess.java:590)
    at soot.JastAddJ.TypeAccess.type(TypeAccess.java:583)
    at soot.JastAddJ.CompilationUnit.refined_NameCheck_CompilationUnit_nameCheck(CompilationUnit.java:200)
    at soot.JastAddJ.CompilationUnit.nameCheck(CompilationUnit.java:611)
    at soot.JastAddJ.ASTNode.collectErrors(ASTNode.java:1283)
    at soot.JastAddJ.CompilationUnit.errorCheck(CompilationUnit.java:178)
    at soot.JastAddInitialResolver.formAst(JastAddInitialResolver.java:58)
    at soot.JavaClassSource.resolve(JavaClassSource.java:54)
    at soot.SootResolver.bringToHierarchy(SootResolver.java:243)
    at soot.SootResolver.bringToSignatures(SootResolver.java:275)
    at soot.SootResolver.processResolveWorklist(SootResolver.java:173)
    at soot.SootResolver.resolveClass(SootResolver.java:134)
    at soot.Scene.loadClass(Scene.java:873)
    at soot.Scene.loadClassAndSupport(Scene.java:858)
    at soot.Scene.loadNecessaryClass(Scene.java:1575)
    at soot.Scene.loadNecessaryClasses(Scene.java:1586)
    at soot.Main.run(Main.java:250)
    at soot.Main.main(Main.java:147)
Caused by: java.lang.RuntimeException: java.lang.ClassCastException: soot.JastAddJ.CONSTANT_Utf8_Info cannot be cast to soot.JastAddJ.CONSTANT_Class_Info
    at soot.JastAddJ.Attributes$TypeAttributes.innerClasses(Attributes.java:424)
    at soot.JastAddJ.Attributes$TypeAttributes.processAttribute(Attributes.java:316)
    at soot.JastAddJ.Attributes.attributes(Attributes.java:61)
    at soot.JastAddJ.Attributes$TypeAttributes.<init>(Attributes.java:307)
    at soot.JastAddJ.BytecodeParser.parse(BytecodeParser.java:337)
    at soot.JastAddJ.BytecodeParser.read(BytecodeParser.java:27)
    at soot.JastAddJ.PathPart.getCompilationUnit(PathPart.java:87)
    ... 36 more
Caused by: java.lang.ClassCastException: soot.JastAddJ.CONSTANT_Utf8_Info cannot be cast to soot.JastAddJ.CONSTANT_Class_Info
    at soot.JastAddJ.BytecodeParser.parseThisClass(BytecodeParser.java:437)
    at soot.JastAddJ.BytecodeParser.parseTypeDecl(BytecodeParser.java:404)
    at soot.JastAddJ.BytecodeParser.parse(BytecodeParser.java:331)
    at soot.JastAddJ.BytecodeParser.parse(BytecodeParser.java:301)
    at soot.JastAddJ.Attributes$TypeAttributes.innerClasses(Attributes.java:405)
    ... 42 more

Thank you all for the help.



Bests,

Behnam



Best regards,
  Steven


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20170403/00414ce0/attachment-0001.html>


More information about the Soot-list mailing list