Tool
vdexExtractor
Command-line C tool that extracts the Dex bytecode held in the Vdex containers that ART's dex2oat compiler writes beside Oat files since Android 8.0 (API 26), and by default reverts ART's dex-to-dex quickening so the output is ordinary Dex again. It can also dump the verified-dependency records stored in a Vdex file, disassemble the bytecode in a dexdump-like format and report the Android API level of a Vdex version. Android 9 and 10 Vdex files hold CompactDex, which the bundled deodex helper converts back to standard Dex through a separately built compact_dex_converter.
Requirements & limits
- Inactive: the last tag is 0.6.0 (2019-12-30), there are no GitHub releases, and the reviewed master commit (2020-05-13) is seven commits past that tag. Backends exist for Vdex versions 006, 010, 019 and 021, which the README and changelog place between Android 8 (Oreo) and Android 10 (Q); there is no backend for later Vdex versions.
- Build with make.sh using gcc (default) or clang on Linux or macOS, or under Cygwin on Windows; zlib development files are required, and the cross-android target uses the Android NDK's ndk-build to produce armeabi-v7a, arm64-v8a, x86 and x86_64 executables. Binaries are written under bin/; the repository commits no prebuilt executables.
- Inputs are Vdex files, or directories of them, that the user takes from their own device or system image; scripts/extract-apps-from-device.sh pulls the oat, art and vdex outputs, and optionally the APKs, of installed packages over ADB, and some system app data needs root. tools/deodex/run.sh needs wget, shasum and unzip and downloads the author's prebuilt compact_dex_converter archives from OneDrive with SHA-256 checks; the API 29 converter is Linux-only, and the converter's own source builds only as an AOSP module.
- Apache-2.0 (copyright CENSUS S.A.). The README notes that equivalent unquickening was contributed to AOSP's oatdump. Recovered Dex code remains subject to the rights of the app or system-image owner. Nothing was built or run, and the reviewed sources establish no REA connection.
About this entry
- Type
- Tool
- Category
- Android tools
- Relationship
- Foundation tool
- Targets
- App
Sources reviewed
The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.
Primary sources
- README.md GitHub · anestisb/vdexExtractor · Revision 78f283b
- README.md#L239-L349 GitHub · anestisb/vdexExtractor · Revision 78f283b
- README.md#L350-L422 GitHub · anestisb/vdexExtractor · Revision 78f283b
- make.sh GitHub · anestisb/vdexExtractor · Revision 78f283b
- src/vdex GitHub · anestisb/vdexExtractor · Revision 78f283b
- scripts/extract-apps-from-device.sh GitHub · anestisb/vdexExtractor · Revision 78f283b
- tools/deodex/run.sh GitHub · anestisb/vdexExtractor · Revision 78f283b
- tools/deodex/constants.sh GitHub · anestisb/vdexExtractor · Revision 78f283b
- LICENSE GitHub · anestisb/vdexExtractor · Revision 78f283b
- https://github.com/anestisb/vdexExtractor/commit/5f36debb03fccbb245af60129b1f94d369d7544c
More in Apps
- Garlic · Tool
- Aegis: trace a login-code calculation · Case study
- Notion: trace the clipboard bridge · Case study
- PicoPrint: LX-D02 printer investigation · Case study
- ReaCut: video-editor reconstruction · Case study
- CF632BLE: a local client from scale-protocol research · Case study