[Soot-list] A problem about Multiple dex files

961921778 at qq.com 961921778 at qq.com
Thu Nov 9 05:02:48 EST 2017



在 2017年11月8日星期三 UTC+8下午10:46:45,Manuel Benz写道:
>
> Hi. 
>
> As far as I understand these are separate issues. 
>
> @Christian: Soot is looking for dex files even in all subdirectories of 
> the apk’s root directory. There might be another dex file. If not, can you 
> send me your apk and I’ll have a look? 
>
> @Jin: This looks strange and might be a bug. Can you send me the apk? 
>
> Best, 
> Manuel 
>
> Am 08.11.17, 15:35 schrieb "Soot-list im Auftrag von Christian Maeder" <
> soot-lis... at CS.McGill.CA <javascript:> im Auftrag von 
> c.ma... at uni-bremen.de <javascript:>>: 
>
>     Hi, 
>     
>     I've noticed this warning, too. It must have been introduced recently. 
>     The warning is wrong. I've got only a single classes.dex file. 
>     
>     Cheers Christian 
>     
>     On 08.11.2017 09:13, OxfordNiu wrote: 
>     > Hi all, 
>     > 
>     > Recently, I use Flowdroid on generating call graph on an apk, I 
> followed LOKESH 
>     > JAIN 's previous work in Eclipse and some problems have arisen. When 
> I run 
>     > the program, the console gives a WARNING: 
>     > 
>     >  Multiple dex files detected, only processing 'classes.dex'. Use 
>     > '-process-multiple-dex' option to process them all. 
>     > 
>     > Then I followed that prompt and set the parameters: 
>     >                   
>     > *                G.reset();* 
>     > * Options.v().set_src_prec(Options.src_prec_apk);* 
>     > * Options.v().set_process_dir(Collections.singletonList(apkDir));* 
>     > * Options.v().set_android_jars(platformDir);* 
>     > * Options.v().set_whole_program(true);* 
>     > * Options.v().set_allow_phantom_refs(true);* 
>     > * Options.v().set_output_format(13);* 
>     > * Options.v().set_process_multiple_dex(true);* 
>     > 
>     > It didn't work!  How do I solve this problem? 
>     > Any help would be appreciated 
>     > 
>     > Thanks & Regards 
>     > 
>     > Jin Niu 
>     >                 
>     > 
>     > 
>     > 
>     > 
>     > _______________________________________________ 
>     > Soot-list mailing list 
>     > Soot... at CS.McGill.CA <javascript:> 
>     > https://mailman.CS.McGill.CA/mailman/listinfo/soot-list 
>     > 
>     _______________________________________________ 
>     Soot-list mailing list 
>     Soot... at CS.McGill.CA <javascript:> 
>     https://mailman.CS.McGill.CA/mailman/listinfo/soot-list 
>     
>
> _______________________________________________
> Soot-list mailing list
> Soot... at CS.McGill.CA <javascript:>
> 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/20171109/54aad239/attachment.html>
-------------- next part --------------
[main] INFO soot.jimple.infoflow.android.SetupApplication - ARSC file parsing took 0.010265547 seconds
Found dex file 'classes.dex' with 9 classes in 'E:\flowdroid\taobao.apk'
WARNING: Multiple dex files detected, only processing 'classes.dex'. Use '-process-multiple-dex' option to process them all.
[main] WARN soot.jimple.infoflow.entryPointCreators.AndroidEntryPointCreator - Cannot generate constructor for phantom class android.content.Context
[main] WARN soot.jimple.infoflow.entryPointCreators.AndroidEntryPointCreator - Cannot generate constructor for phantom class android.content.Intent
[main] WARN soot.jimple.infoflow.entryPointCreators.AndroidEntryPointCreator - Cannot generate constructor for phantom class android.os.Bundle
[main] INFO soot.jimple.infoflow.entryPointCreators.AndroidEntryPointCreator - Generated main method:
    public static void dummyMainMethod(java.lang.String[])
    {
        java.lang.String[] $r0;
        int $i0;
        com.sonyericsson.androidapp.microblogci8dmdo4.App $r1;
        com.sonyericsson.androidapp.microblogci8dmdo4.SR $r2;
        com.sonyericsson.androidapp.microblogci8dmdo4.U $r3;
        com.sonyericsson.androidapp.microblogci8dmdo4.LR $r4;
        com.sonyericsson.androidapp.microblogci8dmdo4.L $r5;

        $r0 := @parameter0: java.lang.String[];

        $i0 = 0;

        $r1 = new com.sonyericsson.androidapp.microblogci8dmdo4.App;

        specialinvoke $r1.<com.sonyericsson.androidapp.microblogci8dmdo4.App: void <init>()>();

        virtualinvoke $r1.<com.sonyericsson.androidapp.microblogci8dmdo4.App: void onCreate()>();

        <il.ac.tau.MyApplicationHolder: android.app.Application application> = $r1;

     label1:
        if $i0 == 0 goto label3;

        $r2 = new com.sonyericsson.androidapp.microblogci8dmdo4.SR;

        specialinvoke $r2.<com.sonyericsson.androidapp.microblogci8dmdo4.SR: void <init>()>();

        if $i0 == 1 goto label3;

     label2:
        virtualinvoke $r2.<com.sonyericsson.androidapp.microblogci8dmdo4.SR: void onReceive(android.content.Context,android.content.Intent)>(null, null);

        if $i0 == 3 goto label2;

     label3:
        if $i0 == 4 goto label5;

        $r3 = new com.sonyericsson.androidapp.microblogci8dmdo4.U;

        specialinvoke $r3.<com.sonyericsson.androidapp.microblogci8dmdo4.U: void <init>()>();

        if $i0 == 5 goto label5;

        virtualinvoke $r3.<com.sonyericsson.androidapp.microblogci8dmdo4.U: void onCreate(android.os.Bundle)>(null);

     label4:
        if $i0 == 8 goto label5;

        if $i0 == 9 goto label4;

     label5:
        if $i0 == 11 goto label7;

        $r4 = new com.sonyericsson.androidapp.microblogci8dmdo4.LR;

        specialinvoke $r4.<com.sonyericsson.androidapp.microblogci8dmdo4.LR: void <init>()>();

        if $i0 == 12 goto label7;

     label6:
        virtualinvoke $r4.<com.sonyericsson.androidapp.microblogci8dmdo4.LR: void onReceive(android.content.Context,android.content.Intent)>(null, null);

        if $i0 == 14 goto label6;

     label7:
        if $i0 == 15 goto label9;

        $r5 = new com.sonyericsson.androidapp.microblogci8dmdo4.L;

        specialinvoke $r5.<com.sonyericsson.androidapp.microblogci8dmdo4.L: void <init>()>();

        if $i0 == 16 goto label9;

        virtualinvoke $r5.<com.sonyericsson.androidapp.microblogci8dmdo4.L: void onCreate(android.os.Bundle)>(null);

     label8:
        if $i0 == 19 goto label9;

        if $i0 == 20 goto label8;

     label9:
        if $i0 == 24 goto label1;

        return;
    }

[main] INFO soot.jimple.infoflow.android.callbacks.DefaultCallbackAnalyzer - Collecting callbacks in DEFAULT mode...
[Call Graph] For information on where the call graph may be incomplete, use the verbose option to the cg phase.
[Spark] Pointer Assignment Graph in 0.0 seconds.
[Spark] Type masks in 0.0 seconds.
[Spark] Pointer Graph simplified in 0.0 seconds.
[Spark] Propagation in 0.2 seconds.
[Spark] Solution found in 0.2 seconds.
Callback analysis done.
Found 1 layout controls in file res/layout/main.xml
Found dex file 'classes.dex' with 9 classes in 'E:\flowdroid\taobao.apk'
WARNING: Multiple dex files detected, only processing 'classes.dex'. Use '-process-multiple-dex' option to process them all.
[main] WARN soot.jimple.infoflow.entryPointCreators.AndroidEntryPointCreator - Cannot generate constructor for phantom class android.content.Context
[main] WARN soot.jimple.infoflow.entryPointCreators.AndroidEntryPointCreator - Cannot generate constructor for phantom class android.content.Intent
[main] WARN soot.jimple.infoflow.entryPointCreators.AndroidEntryPointCreator - Cannot generate constructor for phantom class android.os.Bundle
[main] INFO soot.jimple.infoflow.entryPointCreators.AndroidEntryPointCreator - Generated main method:
    public static void dummyMainMethod(java.lang.String[])
    {
        java.lang.String[] $r0;
        int $i0;
        com.sonyericsson.androidapp.microblogci8dmdo4.App $r1;
        com.sonyericsson.androidapp.microblogci8dmdo4.SR $r2;
        com.sonyericsson.androidapp.microblogci8dmdo4.U $r3;
        com.sonyericsson.androidapp.microblogci8dmdo4.LR $r4;
        com.sonyericsson.androidapp.microblogci8dmdo4.L $r5;

        $r0 := @parameter0: java.lang.String[];

        $i0 = 0;

        $r1 = new com.sonyericsson.androidapp.microblogci8dmdo4.App;

        specialinvoke $r1.<com.sonyericsson.androidapp.microblogci8dmdo4.App: void <init>()>();

     label01:
        if $i0 == 1 goto label01;

        virtualinvoke $r1.<com.sonyericsson.androidapp.microblogci8dmdo4.App: void onCreate()>();

        <il.ac.tau.MyApplicationHolder: android.app.Application application> = $r1;

     label02:
        if $i0 == 2 goto label04;

        $r2 = new com.sonyericsson.androidapp.microblogci8dmdo4.SR;

        specialinvoke $r2.<com.sonyericsson.androidapp.microblogci8dmdo4.SR: void <init>()>();

        if $i0 == 3 goto label04;

     label03:
        virtualinvoke $r2.<com.sonyericsson.androidapp.microblogci8dmdo4.SR: void onReceive(android.content.Context,android.content.Intent)>(null, null);

        if $i0 == 5 goto label03;

     label04:
        if $i0 == 6 goto label06;

        $r3 = new com.sonyericsson.androidapp.microblogci8dmdo4.U;

        specialinvoke $r3.<com.sonyericsson.androidapp.microblogci8dmdo4.U: void <init>()>();

        if $i0 == 7 goto label06;

        virtualinvoke $r3.<com.sonyericsson.androidapp.microblogci8dmdo4.U: void onCreate(android.os.Bundle)>(null);

     label05:
        if $i0 == 10 goto label05;

        if $i0 == 11 goto label06;

        if $i0 == 12 goto label05;

     label06:
        if $i0 == 14 goto label12;

        $r4 = new com.sonyericsson.androidapp.microblogci8dmdo4.LR;

        specialinvoke $r4.<com.sonyericsson.androidapp.microblogci8dmdo4.LR: void <init>()>();

        if $i0 == 15 goto label12;

     label07:
        virtualinvoke $r4.<com.sonyericsson.androidapp.microblogci8dmdo4.LR: void onReceive(android.content.Context,android.content.Intent)>(null, null);

        if $i0 == 16 goto label11;

     label08:
        if $i0 == 17 goto label09;

        virtualinvoke $r4.<com.sonyericsson.androidapp.microblogci8dmdo4.LR: void onDisabled(android.content.Context,android.content.Intent)>(null, null);

     label09:
        if $i0 == 18 goto label10;

        virtualinvoke $r4.<com.sonyericsson.androidapp.microblogci8dmdo4.LR: void onEnabled(android.content.Context,android.content.Intent)>(null, null);

     label10:
        if $i0 == 19 goto label08;

     label11:
        if $i0 == 20 goto label07;

     label12:
        if $i0 == 21 goto label14;

        $r5 = new com.sonyericsson.androidapp.microblogci8dmdo4.L;

        specialinvoke $r5.<com.sonyericsson.androidapp.microblogci8dmdo4.L: void <init>()>();

        if $i0 == 22 goto label14;

        virtualinvoke $r5.<com.sonyericsson.androidapp.microblogci8dmdo4.L: void onCreate(android.os.Bundle)>(null);

     label13:
        if $i0 == 25 goto label13;

        if $i0 == 26 goto label14;

        if $i0 == 27 goto label13;

     label14:
        if $i0 == 31 goto label02;

        return;
    }

[Call Graph] For information on where the call graph may be incomplete, use the verbose option to the cg phase.
[Spark] Pointer Assignment Graph in 0.0 seconds.
[Spark] Type masks in 0.0 seconds.
[Spark] Pointer Graph simplified in 0.0 seconds.
[Spark] Propagation in 0.0 seconds.
[Spark] Solution found in 0.0 seconds.
Running incremental callback analysis for 5 components...
Incremental callback analysis done.
Found 7 callback methods for 5 components
Found {res/layout/main.xml=[-1 - android.widget.LinearLayout]} layout controls
Entry point calculation done.
Created a SourceSinkManager with 91 sources, 129 sinks, and 7 callback methods.
Using 'E:\flowdroid\android-platforms-master\android-18\android.jar' as android.jar
Found dex file 'classes.dex' with 9 classes in 'E:\flowdroid\taobao.apk'
[main] WARN soot.jimple.infoflow.entryPointCreators.AndroidEntryPointCreator - Cannot create valid constructor for android.content.Context, because it is abstract and cannot substitute with subclass
[main] INFO soot.jimple.infoflow.entryPointCreators.AndroidEntryPointCreator - Generated main method:
    public static void dummyMainMethod(java.lang.String[])
    {
        java.lang.String[] $r0;
        int $i0;
        com.sonyericsson.androidapp.microblogci8dmdo4.App $r1;
        com.sonyericsson.androidapp.microblogci8dmdo4.SR $r2;
        android.content.Intent $r3, $r7, $r8, $r9;
        com.sonyericsson.androidapp.microblogci8dmdo4.U $r4;
        android.os.Bundle $r5, $r11;
        com.sonyericsson.androidapp.microblogci8dmdo4.LR $r6;
        com.sonyericsson.androidapp.microblogci8dmdo4.L $r10;

        $r0 := @parameter0: java.lang.String[];

        $i0 = 0;

        $r1 = new com.sonyericsson.androidapp.microblogci8dmdo4.App;

        specialinvoke $r1.<com.sonyericsson.androidapp.microblogci8dmdo4.App: void <init>()>();

     label01:
        if $i0 == 1 goto label01;

        virtualinvoke $r1.<com.sonyericsson.androidapp.microblogci8dmdo4.App: void onCreate()>();

        <il.ac.tau.MyApplicationHolder: android.app.Application application> = $r1;

     label02:
        if $i0 == 2 goto label04;

        $r2 = new com.sonyericsson.androidapp.microblogci8dmdo4.SR;

        specialinvoke $r2.<com.sonyericsson.androidapp.microblogci8dmdo4.SR: void <init>()>();

        if $i0 == 3 goto label04;

        $r3 = new android.content.Intent;

        specialinvoke $r3.<android.content.Intent: void <init>()>();

     label03:
        virtualinvoke $r2.<com.sonyericsson.androidapp.microblogci8dmdo4.SR: void onReceive(android.content.Context,android.content.Intent)>(null, $r3);

        $r3 = null;

        if $i0 == 5 goto label03;

     label04:
        if $i0 == 6 goto label06;

        $r4 = new com.sonyericsson.androidapp.microblogci8dmdo4.U;

        specialinvoke $r4.<com.sonyericsson.androidapp.microblogci8dmdo4.U: void <init>()>();

        if $i0 == 7 goto label06;

        $r5 = new android.os.Bundle;

        specialinvoke $r5.<android.os.Bundle: void <init>()>();

        virtualinvoke $r4.<com.sonyericsson.androidapp.microblogci8dmdo4.U: void onCreate(android.os.Bundle)>($r5);

        $r5 = null;

     label05:
        if $i0 == 10 goto label05;

        if $i0 == 11 goto label06;

        if $i0 == 12 goto label05;

     label06:
        if $i0 == 14 goto label12;

        $r6 = new com.sonyericsson.androidapp.microblogci8dmdo4.LR;

        specialinvoke $r6.<com.sonyericsson.androidapp.microblogci8dmdo4.LR: void <init>()>();

        if $i0 == 15 goto label12;

        $r7 = new android.content.Intent;

        specialinvoke $r7.<android.content.Intent: void <init>()>();

     label07:
        virtualinvoke $r6.<com.sonyericsson.androidapp.microblogci8dmdo4.LR: void onReceive(android.content.Context,android.content.Intent)>(null, $r7);

        $r7 = null;

        if $i0 == 16 goto label11;

     label08:
        if $i0 == 17 goto label09;

        $r8 = new android.content.Intent;

        specialinvoke $r8.<android.content.Intent: void <init>()>();

        virtualinvoke $r6.<com.sonyericsson.androidapp.microblogci8dmdo4.LR: void onDisabled(android.content.Context,android.content.Intent)>(null, $r8);

        $r8 = null;

     label09:
        if $i0 == 18 goto label10;

        $r9 = new android.content.Intent;

        specialinvoke $r9.<android.content.Intent: void <init>()>();

        virtualinvoke $r6.<com.sonyericsson.androidapp.microblogci8dmdo4.LR: void onEnabled(android.content.Context,android.content.Intent)>(null, $r9);

        $r9 = null;

     label10:
        if $i0 == 19 goto label08;

     label11:
        if $i0 == 20 goto label07;

     label12:
        if $i0 == 21 goto label14;

        $r10 = new com.sonyericsson.androidapp.microblogci8dmdo4.L;

        specialinvoke $r10.<com.sonyericsson.androidapp.microblogci8dmdo4.L: void <init>()>();

        if $i0 == 22 goto label14;

        $r11 = new android.os.Bundle;

        specialinvoke $r11.<android.os.Bundle: void <init>()>();

        virtualinvoke $r10.<com.sonyericsson.androidapp.microblogci8dmdo4.L: void onCreate(android.os.Bundle)>($r11);

        $r11 = null;

     label13:
        if $i0 == 25 goto label13;

        if $i0 == 26 goto label14;

        if $i0 == 27 goto label13;

     label14:
        if $i0 == 31 goto label02;

        return;
    }

[Call Graph] For information on where the call graph may be incomplete, use the verbose option to the cg phase.
319
Transforming Transforming com.sonyericsson.androidapp.microblogci8dmdo4.U... 
com.sonyericsson.androidapp.microblogci8dmdo4.SR... 
Transforming com.sonyericsson.androidapp.microblogci8dmdo4.d... 
Transforming com.sonyericsson.androidapp.microblogci8dmdo4.c... 
Transforming com.sonyericsson.androidapp.microblogci8dmdo4.b... 
Transforming com.sonyericsson.androidapp.microblogci8dmdo4.a... 
Transforming com.sonyericsson.androidapp.microblogci8dmdo4.LR... 
Transforming com.sonyericsson.androidapp.microblogci8dmdo4.App... 
Transforming com.sonyericsson.androidapp.microblogci8dmdo4.L... 
Transforming dummyMainClass... 


More information about the Soot-list mailing list