10 releases
0.5.0 | May 31, 2021 |
---|---|
0.4.0 | Dec 13, 2019 |
0.3.1 | Dec 1, 2019 |
0.3.0 | Nov 29, 2019 |
0.1.1 | Nov 18, 2019 |
#1480 in Parser implementations
473 downloads per month
Used in smali_disassembler
295KB
3K
SLoC
Dex
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 struct
s, and method
s 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 addAndroid/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 theandroid.jar
file in the SDK. (ex:Android/Sdk/platforms/android-<version>/android.jar
). This is needed to prevent warnings when runningd8
. - Use
cargo install cargo-tarpaulin
and runcargo 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!
Dependencies
~4MB
~76K SLoC