[Soot-list] Analyzing Android source code

Jonas De Bleser jonas.de.bleser at vub.be
Wed Apr 19 09:25:14 EDT 2017


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/20170419/699864d0/attachment-0001.html>


More information about the Soot-list mailing list