[Soot-list] Analyzing Android source code

Arzt, Steven steven.arzt at sit.fraunhofer.de
Fri Apr 21 10:20:45 EDT 2017


Hi Jonas,

From the command line, it looks as I you are trying to analyze Java source code. The source code front-end for Soot is pretty outdated at the moment. For a more stable experience, especially on APK files, try to analyze the compiled APK instead. You need your process-dir to point to the APK file and your src-prec option to be set to APK.

Best regards,
  Steven

From: Soot-list [mailto:soot-list-bounces at cs.mcgill.ca] On Behalf Of Jonas De Bleser
Sent: Wednesday, April 19, 2017 3:25 PM
To: soot-list at cs.mcgill.ca
Subject: [Soot-list] Analyzing Android source code

I’m trying to analyse an Android Studio project. However, it doesn’t work with the following options (Java SDK 1.8) :




String[] sootArgsJar = {
        "-cp", "/Users/jonas/Library/Android/sdk/platforms/android-17/android.jar",
        "-w", //"-whole-program",
        "-v", // verbose
        "-process-dir", "/Users/jonas/AndroidStudioProjects/Test/app/src",
        "-keep-line-number",
        "-allow-phantom-refs",

};





soot.Main.main(sootArgsJar);



I get the following error:





Exception in thread "main" java.lang.Error: Error: Failed to load java.lang.reflect.AnnotatedElement.



I’m not sure what the problem is. I thought it had something to do with the annotation @Override,but removing it from the class did not help. Is it a bug or doesn’t SOOT support this?





Full error log:





objc[35881]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/bin/java (0x10276c4c0) and /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/libinstrument.dylib (0x1048a94e0). One of the two will be used. Which one is undefined.



Soot started on Wed Apr 19 15:24:58 CEST 2017



Warning: java.lang.invoke.LambdaMetafactory is a phantom class!



Warning: java.lang.ref.Finalizer is a phantom class!



resolving [from .java]: main.java.com.example.jonas.test.APIResourceLeak



Exception in thread "main" java.lang.Error: Error: Failed to load java.lang.reflect.AnnotatedElement.



        at soot.JastAddJ.PathPart.getCompilationUnit(PathPart.java:109)



      at soot.JastAddJ.Program.getCompilationUnit(Program.java:844)



        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.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.List.substitute(List.java:96)



       at soot.JastAddJ.ParClassDecl.getImplementsList_compute(ParClassDecl.java:1039)



      at soot.JastAddJ.ParClassDecl.getImplementsList(ParClassDecl.java:1028)



      at soot.JastAddJ.ParClassDecl.getNumImplements(ParClassDecl.java:607)



        at soot.JastAddJ.ClassDecl.isCircular_compute(ClassDecl.java:1693)



   at soot.JastAddJ.ClassDecl.isCircular(ClassDecl.java:1673)



   at soot.JastAddJ.ClassDecl.superclass(ClassDecl.java:240)



    at soot.JastAddJ.ClassDecl.supertypeClassDecl(ClassDecl.java:1841)



   at soot.JastAddJ.TypeDecl.supertypeParClassDecl(TypeDecl.java:4489)



  at soot.JastAddJ.ParClassDecl.subtype_compute(ParClassDecl.java:1164)



        at soot.JastAddJ.ParClassDecl.subtype(ParClassDecl.java:1128)



        at soot.JastAddJ.ParClassDecl.instanceOf_compute(ParClassDecl.java:1327)



     at soot.JastAddJ.ParClassDecl.instanceOf(ParClassDecl.java:1320)



     at soot.JastAddJ.ConstructorDecl.applicableBySubtyping(ConstructorDecl.java:1624)



    at soot.JastAddJ.Expr.chooseConstructor(Expr.java:139)



       at soot.JastAddJ.ClassInstanceExpr.decls_compute(ClassInstanceExpr.java:940)



 at soot.JastAddJ.ClassInstanceExpr.decls(ClassInstanceExpr.java:931)



 at soot.JastAddJ.ClassInstanceExpr.refined_NameCheck_ClassInstanceExpr_nameCheck(ClassInstanceExpr.java:170)



 at soot.JastAddJ.ClassInstanceExpr.nameCheck(ClassInstanceExpr.java:754)



     at soot.JastAddJ.ASTNode.collectErrors(ASTNode.java:1283)



    at soot.JastAddJ.ASTNode.collectErrors(ASTNode.java:1292)



    at soot.JastAddJ.ASTNode.collectErrors(ASTNode.java:1292)



    at soot.JastAddJ.ASTNode.collectErrors(ASTNode.java:1292)



    at soot.JastAddJ.ASTNode.collectErrors(ASTNode.java:1292)



    at soot.JastAddJ.ASTNode.collectErrors(ASTNode.java:1292)



    at soot.JastAddJ.ASTNode.collectErrors(ASTNode.java:1292)



    at soot.JastAddJ.ASTNode.collectErrors(ASTNode.java:1292)



    at soot.JastAddJ.ASTNode.collectErrors(ASTNode.java:1292)



    at soot.JastAddJ.ASTNode.collectErrors(ASTNode.java:1292)



    at soot.JastAddJ.ASTNode.collectErrors(ASTNode.java:1292)



    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.bringToBodies(SootResolver.java:313)



    at soot.SootResolver.processResolveWorklist(SootResolver.java:166)



   at soot.SootResolver.resolveClass(SootResolver.java:134)



     at soot.Scene.loadClass(Scene.java:873)



      at soot.Scene.loadClassAndSupport(Scene.java:858)



    at soot.Scene.loadNecessaryClasses(Scene.java:1598)



  at soot.Main.run(Main.java:250)



      at soot.Main.main(Main.java:147)



     at Main.main(Main.java:55)



Caused by: java.lang.ArrayIndexOutOfBoundsException: 1612



   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.read(BytecodeParser.java:27)



 at soot.JastAddJ.PathPart.getCompilationUnit(PathPart.java:87)



       ... 65 more







Process finished with exit code 1





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


More information about the Soot-list mailing list