IntelliDroid is tool aimed to extract call paths leading to specific behavior in an Android application, and to execute these paths precisely during run time. When given a set of targeted behaviors, the static analysis traverses the application’s call graph to find paths to these behaviors. It then extracts path constraints, which are used to determine the input values that trigger these paths. The dynamic client takes the extracted paths and path constraints, and inject inputs into the Android device that will trigger the targeted behaviors.
Components
+ Framework Analysis
The ‘FrameworkAnalysis’ performs static analysis to generate constraints for the Android framework. We currently provide the output framework constraints so that they can be added to the application constraints produced by the ‘AppAnalysis’ component.
+ App Analysis
The ‘AppAnalysis’ directory holds the code that generate constraints for Android applications.
+ Dynamic Client
The ‘DynamicClient’ directory holds the python program that communicates with the Android device and sends the input information to trigger the desired events.
Usage:
git clone https://github.com/miwong/IntelliDroid && cd IntelliDroid cd AppAnalysis ./gradlew ./IntelliDroidAppAnalysis --help Setting up the environment cd androidPatches ./patch.sh <path to AOSP directory> TaintDroid Integration ./IntelliDroidAppAnalysis -t taintdroidTargets.txt <preprocessed app directory>
Source: https://github.com/miwong