Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
dex-oracle — 一个基于模式的 Dalvik 反混淆器,它利用有限执行来改进语义分析 | Kitploit
工具/GitHubGitHub/calebfenton/dex-oracle
Android安全逆向工程恶意软件分析二进制分析
GitHubcalebfenton/dex-oracle

dex-oracle

一个基于模式的 Dalvik 反混淆器,它利用有限执行来改进语义分析

查看仓库
5041107年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Oracle

一个基于模式的 Dalvik 反混淆工具,通过有限执行来改进语义分析。同时,也是另一款 Android 反混淆工具 Simplify 的灵感来源。

Gem Version Code Climate Test Coverage

处理前 before

处理后 after

sha1: a68d5d2da7550d35f7dbefc21b7deebe3f4005f3

md5: 2dd2eeeda08ac8c15be8a9f2d01adbe8

安装

步骤 1. 安装 Smali / Baksmali

既然你是精英级的 Android 逆向工程师,我相信你的系统路径中已经存在 Smali 和 Baksmali。如果由于某种奇怪的原因尚未安装,以下命令可以帮你开始,但请仔细检查后再运行:

root@kitploit:~
mkdir ~/bin || cd ~/bin
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/smali-2.2.5.jar && mv smali-*.jar smali.jar
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/baksmali-2.2.5.jar && mv baksmali-*.jar baksmali.jar
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/smali
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/baksmali
chmod +x ./smali ./baksmali
export PATH=$PATH:$PWD

步骤 2. 安装 Android SDK / ADB

确保 adb 已添加到系统路径中。

步骤 3. 安装 Gem

root@kitploit:~
gem install dex-oracle

或者,如果你想从源码构建:

root@kitploit:~
git clone https://github.com/CalebFenton/dex-oracle.git
cd dex-oracle
gem install bundler
bundle install

步骤 4. 连接设备或模拟器

你必须运行一个模拟器或连接一个设备,Oracle 才能正常工作。最低支持的 Android 版本为 5.0!

Oracle 需要在实时的 Android 系统上执行方法。这可以是设备或模拟器(推荐)。如果是设备,请确保你不在意在其上运行可能具有敌意的代码。

如果你想使用模拟器,并且已经安装了 Android SDK,可以通过以下命令创建和启动模拟器镜像:

root@kitploit:~
android avd

使用方法

root@kitploit:~
Usage: dex-oracle [opts] <APK / DEX / Smali Directory>
    -h, --help                       显示此帮助信息
    -s ANDROID_SERIAL,               指定驱动执行使用的设备 ID,默认=""
        --specific-device
    -t, --timeout N                  ADB 命令执行超时时间(秒),默认="120"
    -i, --include PATTERN            仅优化匹配该模式的方法和类,例如 Ldune;->melange\(\)V
    -e, --exclude PATTERN            排除该模式对应的类型;include 会覆盖此选项
        --disable-plugins STRING[,STRING]*
                                     禁用插件,例如 stringdecryptor,unreflector
        --list-plugins               列出可用插件
    -v, --verbose                    输出详细信息
    -V, --vverbose                   输出更详细的信息

例如,仅对名为 Lcom/android/system/admin/CCOIoll; 的类中的方法进行反混淆,输入 APK 文件 obad.apk:

root@kitploit:~
dex-oracle -i com/android/system/admin/CCOIoll obad.apk

工作原理

Oracle 接受 Android 应用(APK)、Dalvik 可执行文件(DEX)和 Smali 文件作为输入。首先,如果输入是 APK 或 DEX,它会反汇编成 Smali 文件。然后,Smali 文件被传递给各个插件,插件执行分析和修改。插件搜索可被转换为更易读形式的模式。为了理解代码的语义,某些 Dalvik 方法会被实际执行并收集输出结果。这样,一些方法调用可以被替换为常量。之后,所有 Smali 文件会被更新。最后,如果输入是 APK 或 DEX 文件,修改后的 Smali 文件会被重新编译,生成更新后的 APK 或 DEX。

方法执行由 Driver 完成。输入的 APK、DEX 或 Smali 与 Driver 通过 dexmerge 合并成一个单独的 DEX,并推送到设备或模拟器上。然后,插件可以使用 Driver,Driver 利用 Java 反射来执行输入 DEX 中的方法。返回值可以用于改善语义分析,而不仅仅是模式识别。这对于许多字符串解密方法尤其有用,这些方法通常接收加密的字符串或字节数组。一个限制是执行仅限于静态方法。

黑客指南

创建你自己的插件

Oracle 自带了三个插件:

  1. Undexguard - 移除某些类型的 Dexguard 混淆
  2. Unreflector - 移除部分 Java 反射
  3. String Decryptor - 简单插件,移除一种常见的字符串加密

如果你遇到一种新的混淆类型,可能可以用 Oracle 来反混淆。查看 Smali 代码,判断是否可以:

  1. 重新排列代码
  2. 通过执行某些静态方法来理解代码

如果满足其中任意一点,你应该尝试编写自己的插件。构建自己的插件有四个步骤:

  1. 识别 Smali 模式
  2. 找出如何简化这些模式
  3. 找出如何与 Driver 交互并调用方法
  4. 找出如何直接应用修改

包含的插件应能很好地指导你理解步骤 #3 和 #4。Driver 旨在帮助完成步骤 #2。

当然,你随时可以分享你遇到的任何混淆,也许有人最终会处理它。

更新 Driver

首先,确保 dx 在你的系统路径中。它是 Android SDK 的一部分,但除非你是硬核玩家,否则它可能不在你的路径中。

driver 文件夹是一个由 Gradle 管理的 Java 项目。将其导入 Eclipse、IntelliJ 等 IDE,并做出你想要的任何更改。完成 Driver 更新后,运行 ./update_driver。这将重新构建 Driver 并将输出的 JAR 转换为 DEX。

故障排除

如果在你的模拟器或设备上执行 Driver 代码时出现问题,请务必打开 monitor(Android SDK 的一部分)并检查是否有任何线索。即使错误对你来说没有意义,但如果你在创建 issue 时附上它,会有帮助。

并非所有 Android 平台都能很好地配合 dex-oracle。有些平台在尝试执行任意 DEX 文件时会出错。如果你遇到段错误或 Driver 崩溃,请尝试使用 Android 4.4.2 API level 19 并搭配 ARM 架构。

有可能某个插件将一段它认为是混淆的代码当作混淆,但实际该代码不应被执行。这似乎不太可能,因为混淆模式通常非常特殊,但确实有可能。如果你发现某个特定插件导致问题,并且你确信该应用并未使用该特定的混淆器(例如,应用未经 DexGuard 保护但 DexGuard 插件仍在尝试执行某些内容),则只需禁用该插件。

更多信息

  1. TetCon 2016 - Android Deobfuscation
  2. Hacking with dex-oracle for Android Malware Deobfuscation
下载工具