• Fixed some bugs – output string processing related bug – network file descriptor idenAfier related bug • Hooked sensiAve API like previous version • Adjusted some hooking – Moved IO hooking to naAve code layer • Released beta version in project page
into tree structure • Intercepted different kinds of methods – Instance method – Constructor – StaAc method • Output parameters and return value of different types – Basic type: String.valueOf(type) – Object: object.toString() – Array: Java ReflecAon • Build API database to detect methods inherited from API • Developed APK instrumentaAon library(APKIL)
Droid[2] • Basic workflow example: – Intercept methods in class Ljava/net/URL 1. Define new class Ldroidbox/java/net/URL 2. Implement corresponding staAc methods to monitor (do the real API call in it) 3. Replace API calls with new methods
inherited from API • How to find connecAons of classes in API – find all class names: jar –f android.jar – find all method signatures in a class: javap – bootclasspath android.jar –s classname
[-‐a, -‐-‐api apilist] [-‐v, -‐-‐version] filename posiAonal arguments: filename path of APK file opAonal arguments: -‐h, -‐-‐help show this help message and exit -‐o, -‐-‐output dirpath output directory -‐a, -‐-‐api apilist config file of API list -‐v, -‐-‐version show program's version number and exit
outdir sample.apk • API configuraAon file – One method: Method signature without return value • Landroid/content/Intent;-‐><init>(Ljava/lang/String;) – All methods with same name: Method signature without parameters and return value • Landroid/content/Intent;-‐><init> – All methods of the same Class: Class signature • Landroid/content/Intent;
different use of analysis • Move APIMonitor to the cloud(under developing) • Do deep analysis on monitoring logs to dig more informaAon • Modify dalvik to support dynamic instrumentaAon