{
  "added_at": "2026-11-02",
  "additional_evidence_urls": [
    "https://github.com/CalebFenton/dex-oracle/blob/d6be172b925e52421c092c574b74a3783b9e7901/lib/dex-oracle/driver.rb",
    "https://github.com/CalebFenton/dex-oracle/tree/d6be172b925e52421c092c574b74a3783b9e7901/lib/dex-oracle/plugins",
    "https://github.com/CalebFenton/dex-oracle/tree/d6be172b925e52421c092c574b74a3783b9e7901/res",
    "https://github.com/CalebFenton/dex-oracle/blob/d6be172b925e52421c092c574b74a3783b9e7901/dex-oracle.gemspec",
    "https://github.com/CalebFenton/dex-oracle/blob/d6be172b925e52421c092c574b74a3783b9e7901/lib/dex-oracle/version.rb",
    "https://github.com/CalebFenton/dex-oracle/blob/d6be172b925e52421c092c574b74a3783b9e7901/.travis.yml",
    "https://github.com/CalebFenton/dex-oracle/blob/d6be172b925e52421c092c574b74a3783b9e7901/LICENSE.txt",
    "https://rubygems.org/gems/dex-oracle/versions/1.0.5"
  ],
  "category": "android",
  "description_en": "Pattern-based Dalvik deobfuscator that takes an APK, a DEX file or a Smali directory, disassembles it with baksmali and runs plugins that look for obfuscation patterns in the Smali code. To learn what a matched call returns, such as a decrypted string, it merges a small driver into the app's DEX, pushes it to a connected Android device or emulator and invokes the static method there through reflection; the result replaces the call as a constant before the APK or DEX is reassembled. Plugins cover simple string encryption, indexed string and class lookups, certain DexGuard patterns and some reflection, and the author describes it as the inspiration for Simplify.",
  "description_zh": "基于模式匹配的 Dalvik 反混淆工具，可处理 APK、DEX 文件或 Smali 目录：先用 baksmali 反汇编，再由各插件在 Smali 代码中查找混淆模式。为得知匹配到的调用会返回什么（例如解密后的字符串），它把一个小型驱动程序合并进应用的 DEX，推送到已连接的 Android 设备或模拟器，并通过反射在设备上调用对应的静态方法；返回值以常量替换原调用，之后再重新组装 APK 或 DEX。插件涵盖简单字符串加密、按索引查找字符串和类、部分 DexGuard 模式以及部分反射调用；作者称它启发了另一个反混淆工具 Simplify。",
  "entry_url": "https://awesomerea.org/resources/dex-oracle/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/dex-oracle/",
  "evidence_url": "https://github.com/CalebFenton/dex-oracle/blob/d6be172b925e52421c092c574b74a3783b9e7901/README.md",
  "group": "tools",
  "id": "dex-oracle",
  "json_url": "https://awesomerea.org/resources/dex-oracle/record.json",
  "kind": "tool",
  "markdown_url": "https://awesomerea.org/resources/dex-oracle/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/dex-oracle/index.md",
  "name": "dex-oracle",
  "name_zh": "dex-oracle Dalvik 反混淆工具",
  "record_type": "resource",
  "relationship": "foundation",
  "requirements": [
    "Development is inactive: the latest RubyGems and GitHub release is 1.0.5 of 2016-07-26, while the reviewed master commit of 2018-12-13 already declares an unpublished 1.0.6. It is installed as a Ruby gem or from source with Bundler; the repository pins Ruby 2.5.3 and needs Java, adb, and smali and baksmali on the PATH, with the README's setup snippet using smali 2.2.5.",
    "Input is the user's own APK, DEX or Smali directory, and a running emulator or attached device with Android 5.0 or later is required because matched methods really execute on it. The README prefers an emulator and warns that the executed code may be hostile; its troubleshooting section instead suggests Android 4.4.2 (API level 19, ARM) if the driver crashes. Only static methods can be executed, and plugins can be disabled when a pattern matches code that is not obfuscation.",
    "The res directory ships the prebuilt driver.dex and a copy of the Android SDK's dx.jar, which the tool uses for DEX merging; rebuilding the driver needs Gradle and the SDK's dx tool. The README lists three plugins, while the plugins directory holds six, adding indexed string and class lookups and a bitwise string-decryption pattern.",
    "RSpec tests with tiny hello-world APK and DEX fixtures and Smali pattern samples ran through a Travis CI configuration on Ruby 2.5.3; the repository has no GitHub Actions workflow.",
    "MIT (LICENSE.txt and the gemspec); dx.jar and the smali tools keep their own terms."
  ],
  "requirements_zh": [
    "项目已不再活跃：RubyGems 与 GitHub 上的最新发布版均为 1.0.5，发布于 2016-07-26；所审阅的 master 提交日期为 2018-12-13，已标注尚未发布的 1.0.6。可作为 Ruby gem 安装，或用 Bundler 从源码安装；仓库固定 Ruby 2.5.3，还需要 Java、adb，以及位于 PATH 中的 smali 和 baksmali，README 的安装示例使用 smali 2.2.5。",
    "输入为使用者自己的 APK、DEX 或 Smali 目录；由于匹配到的方法会真正在设备上执行，必须有正在运行的模拟器或已连接的 Android 5.0 及以上设备。README 推荐使用模拟器，并提醒所执行的代码可能有害；其故障排查部分则建议在驱动崩溃时改用 Android 4.4.2（API 19，ARM）。只能执行静态方法；若某个模式误匹配到并非混淆的代码，可单独禁用相应插件。",
    "res 目录附带预编译的 driver.dex，以及工具用于合并 DEX 的 Android SDK dx.jar 副本；重新构建驱动需要 Gradle 和 SDK 中的 dx 工具。README 列出三个插件，而插件目录实际有六个，另含按索引查找字符串和类的插件以及一种按位运算字符串解密模式。",
    "RSpec 测试使用极小的 hello-world APK、DEX 样例和 Smali 模式片段，曾通过使用 Ruby 2.5.3 的 Travis CI 配置运行；仓库没有 GitHub Actions 工作流。",
    "采用 MIT 许可（见 LICENSE.txt 与 gemspec）；dx.jar 和 smali 工具保留各自条款。"
  ],
  "targets": [
    "app"
  ],
  "url": "https://github.com/CalebFenton/dex-oracle",
  "verification": "source-reviewed",
  "verified_at": "2026-10-20"
}
