This is a tool for exploring the internals of Android applications. It's built on top of Frida, a dynamic instrumentation toolkit for Android.
Currently, it's mainly tested on Fire TV devices.
- Android NDK >= 29 (c++ 23 features are used)
- CMake >= 3.20
- Ninja
- Rooted device or emulator
- Export the Android NDK path, for example:
export ANDROID_NDK_ROOT=$HOME/Library/Android/sdk/ndk/29.0.13113456- Fetch Frida dependencies
./install_dep.sh- Configure
cmake --preset android-arm7-debug -B build- Build
cmake --build build- Run
adb push example/config.json build/explorer /data/local/tmp
adb shell chmod 755 /data/local/tmp/explorer
adb shell /data/local/tmp/explorerThe explorer tool will read the /data/local/tmp/config.json file to configure the behavior of the tool.
The config file is a JSON file containing an array of objects, each representing a Session targeting a specific application. For instance, the following config file will attempt to
- load the
/data/local/tmp/script.jsscript into thecom.example.appapplication, - trace the
startmethod of theMediaCodecclass in thecom.example.appapplication, all arguments and the return value will be printed and output will be written the logcat.
[
{
"app": "com.example.app",
"script": "/data/local/tmp/script.js",
"trace": [
{
"type": "java",
"class": "android.media.MediaCodec",
"method": "start",
"arguments": true,
"log": true
}
]
}
]- Support spawning new processes
- Implment process crash and device lost handling
- Add unit tests
- Support reading script/config files from a http server