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.

Report an outdated entry Suggest a translation fix

Primary sources

  1. README.md GitHub · ZSShen/ProbeDroid · Revision a6dc602
  2. https://github.com/ZSShen/ProbeDroid/wiki/Prerequisite/470d91e6ec6e201143c73e6f33c83851c46705c9
  3. https://github.com/ZSShen/ProbeDroid/wiki/Compile-Engine/755f938494534f068f64d504d5418be8c4babac8
  4. https://github.com/ZSShen/ProbeDroid/wiki/Prepare-Device/8ecdb80097af7a52bf6e9adb106b90b0ba046047
  5. https://github.com/ZSShen/ProbeDroid/wiki/Start-Instrument/0d2f309e320f8b92660c084e6502671940b50133
  6. engine/src/org/probedroid/Instrument.java GitHub · ZSShen/ProbeDroid · Revision a6dc602
  7. launcher/jni/arch/proc_arm.cc GitHub · ZSShen/ProbeDroid · Revision a6dc602
  8. COPYING GitHub · ZSShen/ProbeDroid · Revision a6dc602

More in Native binaries

All 158 entries in Native binaries