Features


Here are the features we extracted from the APK's and used in our classification experiments and some details about the tools and techniques we used to extract them

Static Features

Static features, as their name implies, were extracted statically from the APK's in the datasets. In other words, the apps were NOT executed in any virtual environment. The features gather information about the app, its components, permissions, and source code. Those features were extracted using Aion's extractStaticFeatures method under module "data_inference.featureExtraction" module. Lastly, static features were extracted with the help of the static analysis tool androguard. Here's a complete list of the static features extracted from each app:


Dynamic Features

Unlike their static counterparts, dynamic features are meant to represent the runtime behavior of apps. In order to extract such features, we deployed each app (malicious and benign) to a Genymotion Android Virtual Machine (AVD) and started it. To simulate human interaction with the app, we used a homemade tool we wrote called Droidutan. Our tool is based on AndroidViewClient and is meant to randomly interact with UI elements of the app. For example, if it finds a button, it will tap it.

We define an app's runtime behavior in terms of the API calls it issues during runtime. To capture the API calls made by an app while being tested/executed using Droidutan, we relied on droidmon, which dumps the sensitive API calls made by an app to the system log. After execution, we gather such dumped calls and represent them as a trace (i.e., sequence), of API calls. Dynamic features are, in essence, counts of every category of API call captured by droidmon and listed in its hooks.json file. The total number of dynamic features is, therefore, 37 features.



Citations