Tool
ProbeDroid
Dynamic Java-method instrumentation kit for Android 5.0 that lets analysts write their own tracing and profiling tools for apps whose source code they do not have. A launcher uses ptrace to inject the native engine library and a user-built instrumentation APK into a newly started target app, and the tool subclasses the Instrument API to hook framework or app-defined Java methods and inspect or change their arguments and return values. The README's demos use sample tools that log strings built through StringBuilder and StringBuffer and the activities and services an app starts.
- Targets
- App
- Category
- Debugging and dynamic analysis
- Relationship
- Foundation tool
- Sources reviewed
Requirements & limits
- No releases or tags; the reviewed master commit of 2018-12-16 only updates the project introduction, and the last code change dates from January 2017. The README calls the kit still under construction, supports only Android 5.0 on x86 and ARM armeabi-v7a devices, and says native methods cannot be instrumented yet.
- The wiki pages of July 2016 list JDK and JRE 7+, Python 2.6+ for the auto.py build and deploy script, the Android SDK, the NDK for the launcher and libProbeDroid.so, and Apache Ant for the ProbeDroid.jar API; tools are written as Android Studio projects with minimum API 21 that import that jar, and no Android source tree is needed. Sample tools are under tools/ and in the separate ProbeDroidTool repository.
- Running it needs a rooted Android 5.0 device or an API 21 emulator image, and the wiki has the analyst set SELinux to permissive on that test device before starting the launcher with the target package, engine library, tool APK and main class; results go to logcat. Users supply the apps they analyze.
- MIT (copyright 2016 ZongXian Shen), except the AOSP-derived ART runtime and common sources under Apache-2.0 and the bundled libffi under its MIT license. This review built and ran nothing, and the sources establish no REA connection.
About this entry
The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.
Primary sources
- README.md GitHub · ZSShen/ProbeDroid · Revision a6dc602
- https://github.com/ZSShen/ProbeDroid/wiki/Prerequisite/470d91e6ec6e201143c73e6f33c83851c46705c9
- https://github.com/ZSShen/ProbeDroid/wiki/Compile-Engine/755f938494534f068f64d504d5418be8c4babac8
- https://github.com/ZSShen/ProbeDroid/wiki/Prepare-Device/8ecdb80097af7a52bf6e9adb106b90b0ba046047
- https://github.com/ZSShen/ProbeDroid/wiki/Start-Instrument/0d2f309e320f8b92660c084e6502671940b50133
- engine/src/org/probedroid/Instrument.java GitHub · ZSShen/ProbeDroid · Revision a6dc602
- launcher/jni/arch/proc_arm.cc GitHub · ZSShen/ProbeDroid · Revision a6dc602
- COPYING GitHub · ZSShen/ProbeDroid · Revision a6dc602
More in Native binaries
- Fridump · Tool
- Redress · Tool
- ghidra-nanomips · Tool
- SMDA · Tool
- frida-trace (NowSecure library) · Tool
- BTD (Bin To DNN) · Tool