Skip to content

android-inspector is a library of utilities to introspect source and binary Android apps and Android device firmware. It can be used as a plugin to ScanCode.

Notifications You must be signed in to change notification settings

aboutcode-org/android-inspector

Repository files navigation

android-inspector

android-inspector is a set of utilities to inspect binary Android application APK as well as Android firmwares. This is also a ScanCode.io pipeline plugin.

The available features are:

  • Extract and map the files found in a binary Android application to the assumed corresponding source code.

Other information:

Requirements

See also the next section for detailed instructions.

Local installation and usage test

To install:

  • Clone android-inspector locally side-by-side: git clone https://github.com/aboutcode-org/android-inspector
  • Clone ScanCode.io locally side-by-side: git clone https://github.com/aboutcode-org/scancode.io
  • Change to the scancode.io directory and run make dev then source bin/activate
  • Install jadx minimally
  • Run pip install --editable ../android-inspector
  • Run ScanCode.io with ./manage.py runserver --insecure and open the URL in your browser. There is a new "android_d2d" pipeline available when creating a new project.

To use with example Android APKs and sources:

  • Create a new project and name it "sample-apk-analysis"
  • In the input section, add Download URLs for the source and binary of a public APK:

You can use this pair of source (aka. "from") and binaries (aka. "to"):

Or you can use alternatively this other example pair:

Then:

  • Select "android_d2d" in the pipeline dropdown and click "create".
  • Wait for the pipeline to complete, and check the created Relations as well as the missing "To" source files resulting from mapping the binaries back to sources.

At this stage we typically report missing many source files because these are not present in the source code reposirories. In particular:

  • PurlDB matching would be enabled in a full ScanCode.io installation and could help match the Android toolchain and standard library if indexed.
  • There is a significant number of standard library Java files that are part of the Android toolchain. This will be resolved with this issue #3

Development

  • Install requirements and dependencies using make dev
  • Then source venv/bin/activate

Testing:

  • To run tests: pytest -vvs

Acknowledgements, Funding, Support and Sponsoring

This project is funded, supported and sponsored by:

  • Generous support and contributions from users like you!
  • the European Commission NGI programme
  • the NLnet Foundation
  • the Swiss State Secretariat for Education, Research and Innovation (SERI)
  • Google, including the Google Summer of Code and the Google Seasons of Doc programmes
  • Mercedes-Benz Group
  • Microsoft and Microsoft Azure
  • AboutCode ASBL
  • nexB Inc.

Europa logo EC DG Connect logo

NGI logo NLnet foundation logo

AboutCode logo nexB logo

This project was funded through the NGI0 Core Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 101092990.

NGI Zero Core Logo https://nlnet.nl/project/Back2source-next/

About

android-inspector is a library of utilities to introspect source and binary Android apps and Android device firmware. It can be used as a plugin to ScanCode.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published