工具

vdexExtractor Vdex 字节码提取工具

C 语言命令行工具,用于从 ART 的 dex2oat 编译器自 Android 8.0(API 26)起在 Oat 文件旁生成的 Vdex 容器中提取 Dex 字节码,并默认撤销 ART 的 dex-to-dex quickening 优化,使输出重新成为普通 Dex。它还能转储 Vdex 文件中保存的验证依赖记录,以类似 dexdump 的格式反汇编字节码,并报告某个 Vdex 版本对应的 Android API 级别。Android 9 和 10 的 Vdex 文件存放的是 CompactDex,随附的 deodex 辅助脚本会借助单独构建的 compact_dex_converter 将其转换回标准 Dex。

使用条件与局限

  • 项目已不再活跃:最后一个标签是 0.6.0(2019-12-30),没有 GitHub 发布版,所审阅的 master 提交(2020-05-13)比该标签多七个提交。后端支持 Vdex 006、010、019 和 021 版本,README 和更新日志将其对应到 Android 8(Oreo)至 Android 10(Q);更新的 Vdex 版本没有对应后端。
  • 使用 make.sh 构建,可在 Linux 或 macOS 上选用 gcc(默认)或 clang,Windows 上可在 Cygwin 下构建;需要 zlib 开发文件,cross-android 目标借助 Android NDK 的 ndk-build 生成 armeabi-v7a、arm64-v8a、x86 和 x86_64 可执行文件。二进制输出到 bin/ 目录;仓库未提交任何预编译的可执行文件。
  • 输入为使用者从自己的设备或系统镜像中取得的 Vdex 文件或其所在目录;scripts/extract-apps-from-device.sh 可通过 ADB 拉取已安装应用的 oat、art 和 vdex 产物,并可选拉取 APK,部分系统应用数据需要 root 权限。tools/deodex/run.sh 需要 wget、shasum 和 unzip,会从 OneDrive 下载作者预编译的 compact_dex_converter 压缩包并校验 SHA-256;API 29 版转换器仅有 Linux 版本,转换器源码本身只能作为 AOSP 模块构建。
  • 采用 Apache-2.0 许可(版权归 CENSUS S.A.)。README 提到,等效的 unquickening 功能已贡献给 AOSP 的 oatdump。恢复出的 Dex 代码仍受应用或系统镜像权利人的权利约束。本次未构建或运行任何内容,所审来源未确立与 REA 的关联。

关于此条目

类型
工具
类别
Android 工具
关联
基础工具
目标
应用

来源复核于

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

报告条目过时 建议修正翻译

一手来源

  1. README.md GitHub · anestisb/vdexExtractor · 修订 78f283b
  2. README.md#L239-L349 GitHub · anestisb/vdexExtractor · 修订 78f283b
  3. README.md#L350-L422 GitHub · anestisb/vdexExtractor · 修订 78f283b
  4. make.sh GitHub · anestisb/vdexExtractor · 修订 78f283b
  5. src/vdex GitHub · anestisb/vdexExtractor · 修订 78f283b
  6. scripts/extract-apps-from-device.sh GitHub · anestisb/vdexExtractor · 修订 78f283b
  7. tools/deodex/run.sh GitHub · anestisb/vdexExtractor · 修订 78f283b
  8. tools/deodex/constants.sh GitHub · anestisb/vdexExtractor · 修订 78f283b
  9. LICENSE GitHub · anestisb/vdexExtractor · 修订 78f283b
  10. https://github.com/anestisb/vdexExtractor/commit/5f36debb03fccbb245af60129b1f94d369d7544c

同分区更多条目:应用

应用分区全部 103 项资源