Evaluation Package
This page describes both the DroidICCBench and the GPBench benchmarks along with the configuration used to run the benchmarks. The evaluation package scripts and configuration files can be downloaded here
This package is organized in the following structure:
.
├── android-record-replay/
├── DroidICCBench/
│ ├── scripts/
│ │ ├── run_droidbench.py
│ │ └── translate_droidbench.py
│ └── config/
│ ├── app1.src.log
│ ├── app1.sink.log
│ └── ...
└── GPBench/
├── scripts/
│ ├── run_gp.py
│ ├── run_overhead.py
│ └── translate_gp.py
└── config/
├── app1.src.log
├── app1.sink.log
└── ...
The apps can be downloaded here
The apps package is organized in the following structure:
.
├── DroidICCBench/
│ └── apps/
│ ├── Category1/
│ │ ├── app1
│ │ ├── app2
│ │ └── ...
│ ├── Category2/
│ └── ...
└── GPBench/
└── apps/
├── app1
├── app2
└── ...
The evaluation package contains the android-touch-record-replay
tool which we used to record and replay the execution for each app.
Next, we describe the DroidICCBench and GPBench sections of the evaluation package.
DroidICCBench
Apps
The benchmark consists of 217 apps from DroidBench and ICCbench. We had to exclude eight apps for which we cannot reliably trigger the flow in an automated way, e.g., because it is triggered when the phone memory is low. The 8 eight excluded apps are:
- Callbacks.AnonymousClass1
- Callbacks.LocationLeak1
- Callbacks.LocationLeak2
- Callbacks.LocationLeak3
- Callbacks.RegisterGlobal1
- Callbacks.RegisterGlobal2
- GeneralJava.FactoryMethods1
- Lifecycle.ActivityLifecycle3
For the remaining 209 apps, as the benchmark apps were developed for an older Android API (level 19), where permissions to run any sensitive, we modified the apps to request permissions using the approach if the newer Android versions. At the end, we used 209 apps in our evaluation. The apps are grouped into categories under the DroidICCBench/apps
folder.
Configuration
The combined sources list is under DroidICCBench/config/source_full_list.txt
, the combined sinks list is under DroidICCBench/config/sinks_full_list.txt
.
The replay script for each app is at DroidICCBench/config/[app].replay.txt
, apps without an execution script use the default script DroidICCBench/config/trigger_flow.replay.txt
.
Replication
The script DroidICCBench/scripts/run_droidbench.py
runs the specified benchmark app by selecting its number, the number of each benchmark is its line number in the DroidICCBench/config/droidbench_apks.log
. The script DroidICCBench/scripts/translate_droidbench.py
extracts the paths from the Android logcat and translates it into a human readable format.
GPBench
Apps
We used the benchmark of Google Play applications from Zhang et al [37]. We excluded from our study three out of the 19 apps, as their backend servers were non-functional at the time of writing and we thus could not execute them dynamically. The remaining 16 apps are listed below:
Configuration
The sources short list for each app GPBench/config/[app-name].src.log
, the sinks short list for each app is under GPBench/config/[app-name].sink.log
.
The long list of sources is at GPBench/config/source_long_list.txt
and the long list of sinks is GPBench/config/sinks_long_list.log
.
The replay script for each app is at GPBench/config//[app].replay.txt
.
Replication
The script GPBench/scripts/run_gp.py
runs the specified benchmark app.
The script GPBench/scripts/run_overhead.py
runs the overhead experiment.
The script GPBench/scripts/translate_gp.py
extracts the paths from the Android logcat and translates it into a human readable format.
Fake WhatsApp client
App
We cannot distribute the YoWhatsApp malicious apk online, instead, we provide its following indicators:
package name: com.gbbwhatsapp
sha1 hash: a8dbfd8d48e4a4952e1a822ce1323a37348f0c1c
sha256 hash: 89c23dc02f4f67972a5c4cd9ccc61f7c08c95173d07a980c7340101ba597939e
md5: 531d0a00d3b7221b4ac712fbfe846029
blog describing the malware: link
Sources and Sinks
ViaLin Path
The path provided to the analysts is available here