Coder Social home page Coder Social logo

rubyzy / probedroid Goto Github PK

View Code? Open in Web Editor NEW

This project forked from zsshen/probedroid

0.0 2.0 0.0 2.84 MB

A dynamic binary instrumentation kit targeting on Android(Lollipop) 5.0 and above.

License: MIT License

C++ 61.53% C 21.15% Java 8.61% Python 1.52% Assembly 6.29% Makefile 0.91%

probedroid's Introduction

ProbeDroid

ProbeDroid is a dynamic Java code instrumentation kit for Android application. It provides APIs for users to craft their own instrumentation tools. Thus they can trace, profile, or change the runtime behavior of an interested application. Essentially, Java method is the basic instrumentation unit. To manipulate the interested methods, users should override the template instrumentation gadgets and register them to hook the interested methods. During runtime, when those methods are invoked, the control flow is diverted to the gadgets. And it is the timing to manipulate the boxed method input arguments and return value. In the current stage, ProbeDroid targets on Android 5.0 and above. To build ProbeDroid kit, users just pull the package from GitHub and follow the build commands. Android source tree is not required.

Feature

  • Dynamic Java method instrumentation kit for Android app
    • Java library as integration interface for users
    • Customizable instrumentation gadgets to fit different analysis purposes
    • Modifiable method input and output to change app behavior
  • Direct build process without Android source dependency
    • Pulling the GitHub source and following the document
  • Succinct deployment without customized ROM or system apps
    • Only ProbeDroid engine and users' instrumentation tools are required

Limitation

  • Cannot instrument native methods now (under development)
  • Currently only supporting Android 5.0 and the devices based on Intel x86 and ARM eabi v7a

ProbeDroid is still under construction. More features will be presented in the near feature.

<img src="https://github.com/ZSShen/ProbeDroid/blob/master/res/ProbeDroidOverview.png"/width="750px">

Installation

Please refer to Source Building Wiki

Usage

Please refer to Play and Hack Wiki

Demo

Instrument GoogleMaps

Click the picture to view the demo vedio

GoogleMaps
A simple instrumentation tool which tracks the strings converted from StringBuilder and StringBuffer object. By taking some forensics towards the converted strings, you would notice that GoogleMaps applies Java reflection for some network authentication. Also, It will dynamically generate some C/C++ code and compile it for map rendering.

Instrument KKTix

Click the picture to view the demo vedio

KKTix
A simple instrumentation tool which tracks the started Activities and Services. By taking some forensics towards the tracked components, you would notice that KKTix applies several kinds of Activies to render the ticket booking pages. Also, it starts a Service for background computation.

License

Except for the following source code:

  • android/art/runtime/, common/log.*, common/stringprintf.*, common/utf.*, and common/macros.h subtrees belong to [AOSP], which are licensed under Apache v2.0.
  • common/libffi/ subtree belongs to [libffi], which is licensed under MIT.

All the source code are licensed under MIT. See COPYING for details.

Contact

Please contact me via the mail [email protected].
Note that the kit is still under construction. Contribution and bug report is desired.

probedroid's People

Contributors

zsshen avatar bletchley13 avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.