Skip to content
Rust parser for Android's dex format
Rust
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples
resources
src
tests
.gitignore
.travis.yml
Cargo.toml
README.md

README.md

Dex

Build Status

Dex is a parser for Android's Dex format written completely in Rust.

Most of the functionality to access the data structures in the file is implemented. Test coverage stands at 81% as of v0.3.0

Usage

Add to your Cargo.toml:

dex = "0.4.0"

Documentation

The primary source of documentation for dex format is Android website. Most of the public structs, and methods in this crate have the same names. There are a few examples here to get you started.

Development Notes

  • The library makes use of mmap to access the file contents.
  • scroll is used to parse binary data.
  • The included classes.dex in the resources folder is from the open-source application ADW launcher. You can find the source code here

Running test cases

Some tests contains Java code and require javac and d8. The other option is to open a PR and test using the travis setup.

  • To get d8, you need to install Android SDK and add Android/Sdk/build-tools/<version>/ directory to PATH variable.
  • For javac, you need to install Java.
  • Also, ANDROID_LIB_PATH variable needs to be set in the environment. It should point to the android.jar file in the SDK. (ex: Android/Sdk/platforms/android-<version>/android.jar). This is needed to prevent warnings when running d8.
  • Use cargo install cargo-tarpaulin and run cargo tarpaulin to get test coverage.

Contributing

All contributions are welcome! Feel free to raise issues/PRs on Github if you find a bug, have a question or think something can be improved! Please add a test when you open an PR!

You can’t perform that action at this time.