[Soot-list] Fwd: Problem running the Android Instrumentation example

Behnam Heydarshahi behnam at eecs.tufts.edu
Wed Apr 19 11:53:13 EDT 2017


Hi All,

I have been stuck for two weeks at getting Soot to instrument my Android app. (or any app for that matter).

I would highly appreciate if anyone could please give me a hint or direction.

Thank you,

Behnam


> Begin forwarded message:
> 
> From: Behnam <behnam at eecs.tufts.edu>
> Subject: Re: [Soot-list] Problem running the Android Instrumentation example
> Date: April 3, 2017 at 5:38:06 PM EDT
> To: "Arzt, Steven" <steven.arzt at sit.fraunhofer.de>, Bernhard Berger <berber at tzi.de>
> Cc: "soot-list at cs.mcgill.ca" <soot-list at cs.mcgill.ca>
> 
> Please see in-line.
> 
> 
> On 04/03/2017 04:26 PM, Arzt, Steven wrote:
>> Ok, I should not write e-mails when I’m in a hurry. The output option is called “dex”:
>>  
>>                 -output-format dex
> Haha, happens to me too.
>>  
>> To get this sorted out, can you please send me the APK file? That should shorten the back and forth quite a bit.
> I have uploaded on Dropbox both my respdroid.apk <https://www.dropbox.com/s/0473a2zwuhtbh3u/respdroid.apk?dl=0> and AndroidInstrument.Java <https://www.dropbox.com/s/njoazo00jfcp163/AndroidInstrument.java?dl=0>.
> For reference, here's the latest command I have used:
> 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 -output-format dex -process-dir respdroid.apk
> Soot started on Mon Apr 03 17:32:11 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 again.
> 
> Bests,
> 
> Behnam
> 
> 
>>  
>> From: Behnam [mailto:behnam at eecs.tufts.edu <mailto:behnam at eecs.tufts.edu>] 
>> Sent: Monday, April 3, 2017 6:32 PM
>> To: Arzt, Steven <steven.arzt at sit.fraunhofer.de> <mailto:steven.arzt at sit.fraunhofer.de>; Bernhard Berger <berber at tzi.de> <mailto:berber at tzi.de>
>> Cc: soot-list at cs.mcgill.ca <mailto: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
>>  
>>  
> 
> _______________________________________________
> Soot-list mailing list
> Soot-list at CS.McGill.CA <mailto:Soot-list at CS.McGill.CA>
> https://mailman.CS.McGill.CA/mailman/listinfo/soot-list <https://mailman.cs.mcgill.ca/mailman/listinfo/soot-list>

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


More information about the Soot-list mailing list