Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ret-sync — ret-sync は、デバッグセッション(WinDbg/GDB/LLDB/OllyDbg2/x64dbg)を IDA/Ghidra/Binary Ninja の逆アセンブラと同期させるプラグインのセットです。 | Kitploit
ツール/GitHubGitHub/bootleg/ret-sync
動的分析 (サンドボックス)リバースエンジニアリングデバッガユーティリティとフレームワークバイナリ解析
GitHubbootleg/ret-sync

ret-sync

ret-sync は、デバッグセッション(WinDbg/GDB/LLDB/OllyDbg2/x64dbg)を IDA/Ghidra/Binary Ninja の逆アセンブラと同期させるプラグインのセットです。

リポジトリを見る
2.4k307357ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

ret-sync

ret-sync は Reverse-Engineering Tools SYNChronization(逆解析ツールの同期)の略です。これは、デバッグセッション(WinDbg/GDB/LLDB/OllyDbg/OllyDbg2/x64dbg)と逆アセンブラ(IDA/Ghidra/Binary Ninja)を同期するためのプラグイン群です。基本的な考え方は単純です:静的解析と動的解析の両方の長所を活かすことです。

デバッガと動的解析は、以下を提供します:

  • ライブの動的コンテキスト(レジスタ、メモリなど)によるローカルビュー
  • 組み込みの特殊機能/API(例:WinDbgの!peb、!drvobj、!addressなど)

逆アセンブラと静的解析は、以下を提供します:

  • モジュール全体のマクロビュー
  • コード解析、シグネチャ、型など
  • 凝ったグラフビュー
  • 逆コンパイル
  • IDB/GPR内での知識の永続的保存

主な機能:

  • グラフおよび逆コンパイルビューをデバッガの状態と同期
  • ASLRに対応する必要なし、アドレスは動的にリベース
  • デバッガから逆アセンブラへデータ(コメント、コマンド出力)を渡す
  • 複数のIDB/GPRを同時に同期可能で、複数のモジュールを容易にトレース可能
  • 逆アセンブラとデバッガを異なるホスト/VMで実行可能

ret-sync は、私が Quarkslab 在籍中に開発・保守した qb-sync のフォークです。


目次

  • リポジトリの内容
  • 一般的な前提条件
  • バイナリリリース
  • ret-sync の設定
  • インストール
    • IDA 拡張
    • Ghidra 拡張
    • Binary Ninja 拡張
    • WinDbg 拡張
    • GNU gdb (GDB) インストール
    • LLDB インストール
    • OllyDbg 1.10 インストール
    • OllyDbg2 インストール
    • x64dbg インストール
  • 使用方法
    • ret-sync デバッガコマンド
    • IDA の使用方法
    • Ghidra の使用方法
    • Binary Ninja の使用方法
    • WinDbg の使用方法
    • GNU gdb (GDB) の使用方法
    • LLDB の使用方法
    • OllyDbg 1.10 の使用方法
    • OllyDbg2 の使用方法
    • x64dbg の使用方法
    • Python ライブラリの使用方法
  • 拡張
  • TODO
  • 既知のバグ/制限事項
  • ライセンス
  • 謝辞

リポジトリの内容

デバッガプラグイン:

  • ext_windbg/sync: WinDbg拡張のソースファイル、ビルド後: sync.dll
  • ext_gdb/sync.py: GDBプラグイン
  • ext_lldb/sync.py: LLDBプラグイン
  • ext_olly1: OllyDbg 1.10 プラグイン
  • ext_olly2: OllyDbg v2 プラグイン
  • ext_x64dbg: x64dbg プラグイン

逆アセンブラプラグイン:

  • ext_ida/SyncPlugin.py
  • ext_ghidra/dist/ghidra_*_retsync.zip: Ghidra プラグイン
  • ext_bn/retsync: Binary Ninja プラグイン

そしてライブラリプラグイン:

  • ext_lib/sync.py: スタンドアロン Python ライブラリ

一般的な前提条件

IDA および GDB プラグインには有効な Python 環境が必要です。Python 2 (>=2.7) および Python 3 に対応しています。

バイナリリリース

WinDbg/OllyDbg/OllyDbg2/x64dbg デバッガ用のプリビルドバイナリは、Azure DevOps パイプラインを通じて提供されています:Build Status

最新のビルドを選択し、Related セクションの成果物「6 published」を確認してください。

Ghidra プラグインのプリビルドプラグインアーカイブは ext_ghidra/dist に含まれています。

ret-sync の設定

ret-sync は、通常のセットアップ(デバッガと逆アセンブラが同一ホスト上にあり、モジュール名が一致する場合)では、ほとんどのユーザーにとってそのまま動作するはずです。

ただし、特定のシナリオでは個別の設定が必要になる場合があります。そのため、拡張機能とプラグインは、ユーザーのホームディレクトリにあるオプションのグローバル設定ファイル .sync を確認します。これは有効な .INI ファイルである必要があります。

さらに、IDA および Ghidra プラグインは、最初に IDB ディレクトリまたはプロジェクトディレクトリ(<project>.rep)内の設定ファイルを探し、IDB/プロジェクトごとのローカル設定を可能にします。ローカル設定ファイルが存在する場合、グローバル設定ファイルは無視されます。

これらの設定ファイルで宣言された値はデフォルト値を上書きします。デフォルトでは .sync ファイルは作成されないことに注意してください。

以下に、設定ファイルが有用/必要となる3つの一般的なシナリオを詳しく説明します:

  • リモートデバッグ
  • モジュール名の不一致
  • PID の欠落

リモートデバッグ:デバッガと逆アセンブラが異なるホスト上にある場合

[INTERFACE] セクションは、ネットワーク関連の設定をカスタマイズするために使用します。例えば、IDA を仮想マシン(または別のホスト)内で動作するデバッガと同期させたい場合(一般的なリモートカーネルデバッグシナリオ)を考えます。

単純に2つの .sync ファイルを作成します:

  • IDA がインストールされているマシンでは、IDB ディレクトリに配置します
  • Ghidra の場合は、ホームディレクトリに配置します(例: "/home/user" または "C:\Users\user")。``` [INTERFACE] host=192.168.128.1 port=9234
これは **ret-sync** ``IDA`` プラグインに対し、インターフェース ``192.168.128.1`` のポート ``9234`` で待ち受けるよう指示します。言うまでもなく、このインターフェースはリモートホストまたは仮想マシンから到達可能でなければなりません。

* デバッガが実行されているマシン上のユーザーのホームディレクトリ内のもの:```
[INTERFACE]
host=192.168.128.1
port=9234

これは、ret-sync デバッガプラグインに、以前にこのインターフェースでリッスンするように設定された ret-sync IDA プラグインに接続するよう指示します。

注: ここでは実際のIPアドレスを指定する必要があり、0.0.0.0 を使用しないでください。これは、この変数がバインドと接続の両方で複数のソースによって使用されるため、0.0.0.0 を使用すると奇妙なエラーが発生するためです。

IDBとデバッガモジュールの名前が異なる```

[ALIASES] ntoskrnl_vuln.exe=ntkrnlmp.exe

``[ALIASES]``セクションは、ディスアセンブラ(IDA/Ghidra)がモジュールをそのディスパッチャ/プログラムマネージャに登録するために使用する名前をカスタマイズするために使用されます。

デフォルトでは、ディスアセンブラプラグインは入力ファイルの名前を使用します。しかし、事前にファイル名を変更した場合、デバッガから見える実際のプロセスまたはロードされたモジュールの名前と一致しなくなることがあります。

ここでは、ディスパッチャに`ntkrnlmp.exe`(実際の名前)を`ntoskrnl_vuln.exe`(IDB名)の代わりに一致させるように指示するだけです。

## gdbとQt Creatorデバッグフロントエンド

Qt Creatorデバッグフロントエンドは、gdbコマンド出力のログ記録方法を変更します。これにより同期が妨げられるため、一時ファイルの代わりに同期に生のgdb出力を使用するオプションがあります。.sync設定ファイルでは、次のように指定します。```
[GENERAL]
use_tmp_logging_file=false

ターゲットに対してQtデバッグフロントエンドを使用する場合。

組み込みデバイスと欠落した /proc/<pid>/maps

シリアル経由での組み込みデバイスのデバッグや、QEMU内の生ファームウェアのデバッグなど、特定のシナリオでは、gdbはPIDを認識できず、/proc/<pid>/maps にアクセスできません。

このような場合、[INIT] セクションを使用してプラグインにカスタムコンテキストを渡します。これにより、PIDやメモリマッピングなどの一部のフィールドを上書きできます。

.sync コンテンツ抽出:``` [INIT] context = { "pid": 200, "mappings": [ [0x400000, 0x7A81158, 0x7681158, "asav941-200.qcow2|lina"] ] }

各マッピングのエントリは `mem_base`、`mem_end`、`mem_size`、`mem_name` です。

## 自動アドレスリベースのバイパス

組み込みデバイスのデバッグやミニマルなデバッグインターフェースへの接続など、一部のシナリオでは、ディスアセンブラプラグインに実装されている自動アドレスリベース機能をバイパスする方が便利な場合があります。

`use_raw_addr` オプションは現在、Ghidra でのみサポートされています。
.sync 設定ファイルで次のように使用します。```
[GENERAL]
use_raw_addr=true

インストール

IDA拡張機能

IDAの前提条件

IDA 9.2以上が必要です。古いバージョンでは、利用可能なTagsからida9.2タグより前のプロジェクトをチェックアウトしてください。

IDA拡張機能のインストール

IDAのインストールでは、ext_idaからSyncplugin.pyとretsyncフォルダをIDAプラグインディレクトリにコピーします。例:

  • C:\Program Files\IDA Pro 7.4\plugins
  • %APPDATA%\Hex-Rays\IDA Pro\plugins
  • ~/.idapro/plugins

IDA拡張機能の実行

  1. IDBを開く
  2. IDAでプラグインを実行します(Alt-Shift-S)またはEdit -> Plugins -> ``ret-sync````` [sync] default idb name: ld.exe [sync] sync enabled [sync] cmdline: "C:\Program Files\Python38\python.exe" -u "C:\Users\user\AppData\Roaming\Hex-Rays\IDA Pro\plugins\retsync\broker.py" --idb "target.exe" [sync] module base 0x100400000 [sync] hexrays #7.3.0.190614 found [sync] broker started [sync] plugin loaded [sync] << broker << dispatcher not found, trying to run it [sync] << broker << dispatcher now runs with pid: 6544 [sync] << broker << connected to dispatcher [sync] << broker << listening on port 63107
### IDAプラグインのトラブルシューティング

To troubleshoot issues with the IDA extension two options are available in the
file `retsync/rsconfig.py`:```
LOG_LEVEL = logging.INFO
LOG_TO_FILE_ENABLE = False

LOG_LEVEL の値を logging.DEBUG に設定すると、プラグインの出力がより詳細になります。

LOG_TO_FILE_ENABLE の値を True に設定すると、broker.py および dispatcher.py の例外情報が専用ファイルにログ出力されるようになります。ログファイルは %TMP% フォルダに生成され、ファイル名は retsync.%s.err . のパターンになります。

Ghidra 拡張

Ghidra 拡張のビルド

ext_ghidra/dist フォルダにあるビルド済みバージョンを使用するか、指示に従ってビルドしてください。各拡張のビルドは、プラグインのファイル名で指定された Ghidra のバージョンのみをサポートします。例:ghidra_9.1_PUBLIC_20191104_retsync.zip は Ghidra 9.1 Public 用です。

  1. Ghidra をインストール
  2. Gradle をインストール```bash apt install gradle
3. あなたのGhidraインストール用の拡張機能をビルドします (`$GHIDRA_DIR` をあなたのインストールディレクトリに置き換えてください)```bash
cd ext_ghidra
gradle -PGHIDRA_INSTALL_DIR=$GHIDRA_DIR

Ghidra拡張機能のインストール

ツールをダウンロード