Google Play Apps

Login scenario

Distribution of API levels

We downloaded top 100 apps from each of the 58 free app categories in the Canadian Google Play Store as of December 2019, arriving at 5,569 apps. We listed the distribution of API levels of these Google Play apps in the following table.

We did not find any app of API level 6 or below, thus these API levels are omitted in the following table. In addition, there are 14 apps that we cannot extract the API levels.

API Level# of apps
at this level (%)
# of apps
below this level (%)
72 (0.04%)2 (0.04%)
81 (0.02%)3 (0.05%)
92 (0.04%)5 (0.09%)
101 (0.02%)6 (0.11%)
110 (0.00%)6 (0.11%)
120 (0.00%)6 (0.11%)
131 (0.02%)7 (0.13%)
146 (0.11%)13 (0.23%)
150 (0.00%)13 (0.23%)
163 (0.05%)16 (0.29%)
173 (0.05%)19 (0.34%)
181 (0.02%)20 (0.36%)
199 (0.16%)29 (0.52%)
200 (0.00%)29 (0.52%)
2114 (0.25%)43 (0.77%)
2227 (0.48%)70 (1.26%)
2341 (0.74%)111 (1.99%)
2423 (0.41%)134 (2.41%)
2554 (0.97%)188 (3.38%)
26439 (7.88%)627 (11.26%)
27342 (6.14%)969 (17.40%)
283802 (68.27%)4771 (85.67%)
29782 (14.04%)5553 (99.71%)
302 (0.04%)5555 (99.75%)
Unknown14 (0.25%)NA

The first step of our Google Play apps selection is to keep apps of API level 25 or below. This selection resulted in 188 apps.

Login Identification

After retriving the API level of each app, we kept apps of API level 25 or below. This selection resulted in 188 apps. We then executed every app on a device for 20 minutes, and check whether the app contains any authentication functionality. We confirmed reliable authentication mechanism in 51 out of 188 apps.

In this section, we listed all 51 apps with reliable authentication mechanism. We also provide what type of login functionality we identified from each app.

The following table consists of these columns:

  • APILevel: The API level of an app. We sorted all the apps by their API levels, from the smallest one to the largest one.
  • AppName: The full package name of the app.
  • Category: On Google Play Store, apps are categorized into 58 categories, e.g., AUTO_AND_VEHICLES, BOOKS_AND_REFERENCE. We listed the category of an app on Google Play Store in this column. An app may from multiple categories, e.g., com.facebook.katana from both APPLICATION and SOCIAL categories. We confirmed that the APKs from different categories with the same app name are identical.
  • LoginType: What type of login functionality we identified from each app. There are mainly two types of login:
    • Traditional: Login functionality is not delegated to third-party OAuth service providers.
    • OAuth (including Google Sign In, Facebook Login and Weibo): Login functionality is delegated to third-party OAuth service providers.
  • Included/Excluded: Whether we included or excluded an app. For apps that are excluded, we also provided the reason in parentheses.
APILevelAppNameCategoryLoginTypeIncluded/Excluded
14com.echangecadeauxSOCIALTraditional
16lagamerie.nopeGAME_TRIVIAGoogle Sign In✗ (OAuth)
17com.rtp.livepass.androidSPORTSTraditional
19com.tripadvisor.tripadvisorTRAVEL_AND_LOCALTraditional
Google Sign In
Facebook Login
21ca.intact.mydrivingdiscountFINANCETraditional
com.asiandateSOCIALTraditional
com.facebook.katanaAPPLICATION, SOCIALTraditional✗ (Highly obfuscated)
com.facebook.orcaANDROID_WEAR, APPLICATION, COMMUNICATIONTraditional✗ (Highly obfuscated)
22ca.passportparking.mobile.passportcanadaMAPS_AND_NAVIGATIONTraditional
com.aldiko.androidBOOKS_AND_REFERENCETraditional
com.aldiko.classicBOOKS_AND_REFERENCETraditional
com.ninjakiwi.monkeycityGAME_STRATEGYGoogle Sign In✗ (OAuth)
com.passportparking.mobile.parkvictoriaMAPS_AND_NAVIGATIONTraditional
com.passportparking.mobile.torontoMAPS_AND_NAVIGATIONTraditional
tc.tc.scsm.phonegapTOOLSTraditional
23co.adultfnder.androidDATINGTraditional✗ (WebView)
com.distinctivegames.hockey2016GAME_SPORTSGoogle Sign In✗ (OAuth)
com.giantssoftware.fs14FAMILY, FAMILY_EDUCATION, GAME_SIMULATIONGoogle Sign In✗ (OAuth)
com.luckyslots.slotcircusGAME_CASINOFacebook Login✗ (OAuth)
com.onetapsolutions.morneau.activityHEALTH_AND_FITNESSTraditional
com.superluckycasino.billionaire.slots.vegas.android.freeGAME_CASINOFacebook Login✗ (OAuth)
com.superluckycasino.doubleup.slots.vegas.android.freeGAME_CASINOFacebook Login✗ (OAuth)
com.superluckycasino.fortunespin.slots.vegas.android.freeGAME_BOARDFacebook Login✗ (OAuth)
com.superluckycasino.getrich.slots.vegas.android.freeGAME_CARDFacebook Login✗ (OAuth)
com.undergroundcreative.superstarbandmanagerGAME_MUSICTraditional✗ (WebView)
es.socialpoint.dragonlandGAME_ADVENTUREGoogle Sign In
Facebook Login
✗ (OAuth)
✗et.fieldwire.appBUSINESSTraditional
24com.ackroo.mrgasAUTO_AND_VEHICLESTraditional
com.adobe.adobephotoshopfixPHOTOGRAPHYTraditional✗ (WebView)
com.andromo.dev601172.app653895HOUSE_AND_HOMETraditional✗ (WebView)
com.robtopx.geometrydashmeltdownGAME_ARCADETraditional✗ (Unity)
com.robtopx.geometrydashsubzeroGAME_ARCADETraditional✗ (Unity)
com.robtopx.geometrydashworldGAME_ARCADETraditional✗ (Unity)
com.robtopx.geometryjumpliteGAME_ARCADETraditional✗ (Unity)
com.zuuks.city.drivingGAME_RACINGGoogle Sign In
Facebook Login
✗ (OAuth)
25com.adobe.photoshopmixPHOTOGRAPHYTraditional✗ (WebView)
com.adobe.readerAPPLICATION, PRODUCTIVITYTraditional✗ (WebView)
com.airbnb.androidTRAVEL_AND_LOCALTraditional
Google Sign In
Facebook Login
Weibo
com.bonusxp.legendGAME_ADVENTUREGoogle Sign In✗ (OAuth)
com.bose.gd.eventsEVENTSTraditional
com.eggheadgames.quicklogicproblemsFAMILY_BRAINGAMESFacebook Login✗ (OAuth)
com.instagram.androidAPPLICATION, SOCIALTraditional
Facebook Login
✗ (Highly obfuscated)
com.kolesnik.pregnancyPARENTINGGoogle Sign In✗ (OAuth)
com.ludia.tmntGAME_ROLE_PLAYINGGoogle Sign In✗ (OAuth)
com.monclubsportif.monclubsportifSPORTSTraditional✗ (WebView)
com.phonehalo.itemtrackerPRODUCTIVITYTraditional
com.reludo.shootingrangechallengeGAME_SPORTSGoogle Sign In
Facebook Login
✗ (OAuth)
com.snow_trailsAUTO_AND_VEHICLESTraditional✗ (React Native)
com.viagogo.consumer.viagogo.playstoreEVENTSTraditional
Facebook Login
com.yelp.androidTRAVEL_AND_LOCALTraditional
Google Sign In
Facebook Login
onxmaps.huntSPORTSTraditional
Facebook Login

Our final app selection consists of 20 Google Play apps.

Sources and sinks

We provided the list of sources and sinks we used for login-related Google Play apps (SS-GPL) in Section 3.4.2 (Table 6) of our paper.

Spyware scenario

Sources and sinks

We provided the list of sources and sinks we used for spyware Google Play apps (SS-GPS) in Section 3.4.2 (Table 7) of our paper.

Overall selected apps and expected results

This section contains (1) a package contains 26 Google Play apps (login-related and spyware) that we used in our study and details of expected flows (2) a table with information of these Google Play apps that we used in our study and the number of expected flows (ground truth) we identified.

All selected apps and the corresponding expected results can be downloaded here. To compress the size of this package, We did not include the decompiled source code of each app. However, the decompiled tool Jadx v1.0.0 is provided here.

Expected results are stored in docx files, where we highlighted the source and sink methods as well as which variables is tainted in each statement. For example, for the following code snippet:

1  package ubc.junbin;
2  class clz {
3    String a = source(); // source
4    String b = a;
5    sink(b); // sink
6  }

We presents the expected results as:

// expected source and sink are put at the top of a flow
Expected source: source()
Expected sink: sink()

> ubc.junbin.clz: // the class to locate statements
L3: String a = source();
L4: String b = a;
L5: sink(b);

We also provide a set of csv files that can be easily parsed automatically. Each csv file contains an expected flow. For example, for the above code snippit, the csv file may look like the following. The name of Class, LineID, and Line are extracted using Soot v3.3.0.

IDClassLineIDLine
0ubc.junbin.clzL3$r2 = virtualinvoke $r1.<ubc.junbin.clz: java.lang.String source()>();
1ubc.junbin.clzL4$r3 = $r2;
2ubc.junbin.clzL5virtualinvoke $r1.<ubc.junbin.clz: void sink()>($r3);

The following table detailedly presents information of these 26 selected apps, which consists of these columns:

  • APILevel: The API level of an app. We sorted all the apps by their API levels, from the smallest one to the largest one.
  • AppID: We numbered all Google Play apps we used, from 1 to 26, obeying the order of “APILevel”.
  • AppName: The full package name of the app.
  • Number of component(s): The number of Android components declared in the manifest file of an app.
  • Number of expected flow(s): The number of expected flows.
APILevelAppIDAppNameDEXSize (MB)# of
component(s)
# of expected
flow(s)
Login-related Google Play Apps
141com.echangecadeaux3.0311
172com.rtp.livepass.android6.4571
193com.tripadvisor.tripadvisor5.3 791
214ca.intact.mydrivingdiscount8.8421
5com.asiandate8.4391
226ca.passportparking.mobile.passportcanada14.01341
7com.aldiko.android9.5781
8com.passportparking.mobile.parkvictoria14.71371
9com.passportparking.mobile.toronto14.11341
10tc.tc.scsm.phonegap10.01161
2311com.onetapsolutions.morneau.activity10.21011
12net.fieldwire.app9.8281
2413com.ackroo.mrgas5.21815
2514com.airbnb.android65.42351
15com.bose.gd.events15.11571
16com.phonehalo.itemtracker16.7853
17com.viagogo.consumer.viagogo.playstore13.4201
18com.yelp.android20.53141
19onxmaps.hunt11.2581
Spyware Google Play Apps
2120com.mobistartapp.flashlight4.4577
21com.monitor.phone.s0ft.phonemonitor0.7712
2322com.mobistartapp.win7imulator3.9303
2523com.mobistartapp.windows7launcher4.67711
24com.tassaly.flappybird5.7657
25ma.coderoute.hzpermispro5.2927
Min0.77
Max65.4314
Mean11.488
Median9.577

Sources of failures

Our analysis results can be downloaded here. Our manual inspection results about sources of failures on Google Play apps (both login-related ones and spyware) can be found in Section 5.3 (Table 12) of our paper.

Execution time and memory consumption

In the following table, we detailedly list the execution time (in minutes) of each tool on Google Play apps.

The following table consists of these columns:

  • AppID and AppName: These two columns are information of benchmarks, matching AppID, and AppName in Overall selected apps and expected results¶ table.
  • The left columns are all about results of studied tools. We list details about the execution time of each tool.
AppID AppName FlowDroid v2.7.1 DroidRA + FlowDroid v2.7.1 DroidRA Instrumentation
Login-related Google Play Apps
1 com.echangecadeaux (EX) (EX) 1
2 com.rtp.livepass.android (EX) (EX) 169
3 com.tripadvisor.tripadvisor 279 (EX) (EX)
4 ca.intact.mydrivingdiscount 80 (EX) 3
5 com.asiandate (EX) (EX) 88
6 ca.passportparking.mobile.passportcanada 1213 (EX) 3
7 com.aldiko.android (EX) (EX) (EX)
8 com.passportparking.mobile.parkvictoria (EX) (EX) 2
9 com.passportparking.mobile.toronto 73 (EX) 2
10 tc.tc.scsm.phonegap 412 413 3
11 com.onetapsolutions.morneau.activity 4 4 2
12 net.fieldwire.app (EX) (EX) 4
13 com.ackroo.mrgas 2 2 3
14 com.airbnb.android (EX) (EX) 9
15 com.bose.gd.events 276 276 36
16 com.phonehalo.itemtracker (EX) (EX) 3
17 com.viagogo.consumer.viagogo.playstore 2 (EX) (EX)
18 com.yelp.android (EX) (EX) 3
19 onxmaps.hunt (EX) (EX) (EX)
Spyware Google Play Apps
20 com.mobistartapp.flashlight 2 (EX) (EX)
21 com.monitor.phone.s0ft.phonemonitor 1 1 3
22 com.mobistartapp.win7imulator 18 (EX) (EX)
23 com.mobistartapp.windows7launcher 2 1 6
24 com.tassaly.flappybird (OOM) (OOM) 6
25 ma.coderoute.hzpermispro 3 4 7
Min 1 1 1
Max 1213 413 169
Mean 169 100 19
Median 11 4 3

In the following table, we detailedly list the memory consumption (in MBs) of each tool on Google Play apps. The below table also consists of two main parts, similar to the above table for execution time, while the second part is with memory consumption.

AppID AppName FlowDroid v2.7.1 DroidRA + FlowDroid v2.7.1 DroidRA Instrumentation
Login-related Google Play Apps
1 com.echangecadeaux (EX) (EX) 24301
2 com.rtp.livepass.android (EX) (EX) 25820
3 com.tripadvisor.tripadvisor 18355 (EX) (EX)
4 ca.intact.mydrivingdiscount 989 (EX) 27309
5 com.asiandate (EX) (EX) 27954
6 ca.passportparking.mobile.passportcanada 5804 (EX) 27867
7 com.aldiko.android (EX) (EX) (EX)
8 com.passportparking.mobile.parkvictoria (EX) (EX) 28034
9 com.passportparking.mobile.toronto 7209 (EX) 28674
10 tc.tc.scsm.phonegap 1825 5766 27020
11 com.onetapsolutions.morneau.activity 1792 4255 25205
12 net.fieldwire.app (EX) (EX) 29023
13 com.ackroo.mrgas 986 1127 23934
14 com.airbnb.android (EX) (EX) 30102
15 com.bose.gd.events 1284 2561 37676
16 com.phonehalo.itemtracker (EX) (EX) 27326
17 com.viagogo.consumer.viagogo.playstore 977 (EX) (EX)
18 com.yelp.android (EX) (EX) 28423
19 onxmaps.hunt (EX) (EX) (EX)
Spyware Google Play Apps
20 com.mobistartapp.flashlight 617 (EX) (EX)
21 com.monitor.phone.s0ft.phonemonitor 137 190 21814
22 com.mobistartapp.win7imulator 23764 (EX) (EX)
23 com.mobistartapp.windows7launcher 518 517 26059
24 com.tassaly.flappybird (OOM) (OOM) 27348
25 ma.coderoute.hzpermispro 3359 2993 30332
Min 137 190 21814
Max 23764 5766 37676
Mean 4830 2487 27591
Median 1538 2561 27348