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

変換前 変換前

変換後 変換後

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:~
使用方法: dex-oracle [opts] <APK / DEX / Smali ディレクトリ>
    -h, --help                       この画面を表示
    -s ANDROID_SERIAL,               ドライバ実行のためのデバイスID、デフォルト=""
        --specific-device
    -t, --timeout N                  ADB コマンド実行のタイムアウト(秒)、デフォルト="120"
    -i, --include PATTERN            パターンに一致するメソッドとクラスのみ最適化(例: Ldune;->melange\(\)V)
    -e, --exclude PATTERN            最適化からこれらの種類を除外(オーバーライドを含む)
        --disable-plugins STRING[,STRING]*
                                     プラグインを無効にする(例: stringdecryptor,unreflector)
        --list-plugins               利用可能なプラグインを表示
    -v, --verbose                    詳細モード
    -V, --vverbose                   非常に詳細モード

例えば、obad.apk というAPK内の Lcom/android/system/admin/CCOIoll; というクラスのメソッドのみを難読化解除するには:

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 は、dexmerge を使用して Driver と結合され、単一の DEX としてデバイスまたはエミュレータにプッシュされます。プラグインは Driver を使用して、Java リフレクションを使って入力 DEX のメソッドを実行できます。戻り値は、単なるパターン認識を超えたセマンティック解析の向上に利用できます。これは、特に多くの文字列復号メソッド(通常、暗号化された文字列やバイト配列を受け取る)に有用です。制限の一つは、実行が静的メソッドに限定されることです。

ハッキング(改造)

独自プラグインの作成

Oracle には3つのプラグインが付属しています:

  1. Undexguard - 特定のタイプのDexguard難読化を除去
  2. Unreflector - 一部のJavaリフレクションを除去
  3. String Decryptor - 一般的な文字列暗号化を除去するシンプルなプラグイン

新しいタイプの難読化に遭遇した場合、Oracleで難読化解除できる可能性があります。Smaliを見て、コードが以下のいずれかに該当するか判断してください:

  1. 再配置可能
  2. いくつかの静的メソッドを実行することで理解可能

これらのいずれかに該当する場合、独自のプラグインを作成してみてください。プラグインを構築するには4つのステップがあります:

  1. Smaliパターンを特定する
  2. パターンを簡略化する方法を考える
  3. ドライバとの対話およびメソッド呼び出し方法を考える
  4. 変更を直接適用する方法を考える

付属のプラグインはステップ#3と#4を理解するための良いガイドとなるでしょう。Driverはステップ#2を支援するように設計されています。

もちろん、遭遇した難読化を共有することはいつでも歓迎します。誰かが最終的に取り組むかもしれません。

Driver の更新

まず、dx がパスに設定されていることを確認してください。これはAndroid SDKの一部ですが、よほどの上級者でなければパスに設定されていないでしょう。

driver フォルダはGradleで管理されているJavaプロジェクトです。EclipseやIntelliJなどにインポートして、好きなように変更を加えてください。ドライバの更新を完了するには、./update_driver を実行します。これによりドライバが再構築され、出力JARがDEXに変換されます。

トラブルシューティング

エミュレータまたはデバイスでドライバコードの実行に問題がある場合、monitor(Android SDKの一部)を開いて手がかりを確認してください。エラーの意味がわからなくても、問題を作成する際に一緒に投稿すると役立ちます。

すべてのAndroidプラットフォームがdex-oracleと正常に動作するわけではありません。一部のプラットフォームでは、任意のDEXファイルを実行しようとするとクラッシュします。セグメンテーションフォールトやドライバクラッシュが発生する場合は、Android 4.4.2 APIレベル19(ARM)を使用してみてください。

プラグインが難読化と誤認したパターン(実際には実行すべきでないコード)を検出する可能性があります。難読化パターンは非常に特異なため、この可能性は低いですが、あり得ます。特定のプラグインが問題を引き起こしており、アプリがその特定の難読化ツールで保護されていないと確信できる場合、つまりアプリがDexGuardで保護されていないのにDexGuardプラグインが何かを実行しようとしている場合は、そのプラグインを無効にしてください。

詳細情報

  1. TetCon 2016 - Android Deobfuscation
  2. Hacking with dex-oracle for Android Malware Deobfuscation
ツールをダウンロード