Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
patching — IDA Pro用対話型バイナリパッチプラグイン | Kitploit
ツール/GitHubGitHub/gaasedelen/patching
静的分析動的コード分析 (DAST)エクスプロイトリバースエンジニアリングシェルコードデバッガマルウェア分析バイナリ解析学習と教育ペイロード開発バイナリエクスプロイト
GitHub
1.3k1491年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

patching

IDA Pro用対話型バイナリパッチプラグイン

リポジトリを見る

Patching - IDA Proのためのインタラクティブバイナリパッチング

パッチプラグイン

概要

既存のプログラムの動作を変更するためにアセンブリコードにパッチを当てることは、マルウェア解析、ソフトウェアリバースエンジニアリング、およびセキュリティ研究の広範な分野では珍しくありません。このプロジェクトは、人気のIDA Pro 逆アセンブラを拡張し、迅速な反復作業のために設計されたより堅牢なインタラクティブバイナリパッチングワークフローを作成します。

このプロジェクトは現在、広く利用されているKeystone Engineのマイナーなフォークを利用しており、x86/x64およびArm/Arm64のパッチングをサポートし、将来のリリースで残りのKeystoneアーキテクチャを有効にする予定です。

このプラグインの開発を支援してくださったHex-Raysに特別な感謝を捧げます。

リリース

  • v0.2 -- 重要なバグ修正、IDA 9 互換性
  • v0.1 -- 初期リリース

インストール

このプラグインにはIDA 7.6とPython 3が必要です。Windows、Linux、macOSをサポートしています。

注意:古いバージョンのIDA(8.2以下)はPython 3.11以降と互換性がありません。

簡単インストール

次の行をIDAコンソールで実行して、プラグインを自動的にインストールします。

Windows / Linux

root@kitploit:~
import urllib.request as r; exec(r.urlopen('https://github.com/gaasedelen/patching/raw/main/install.py').read())

macOS

root@kitploit:~
import urllib.request as r; exec(r.urlopen('https://github.com/gaasedelen/patching/raw/main/install.py', cafile='/etc/ssl/cert.pem').read())

手動インストール

あるいは、リリースページからお使いのプラットフォーム用の配布可能なプラグインパッケージをダウンロードし、プラグインフォルダに解凍することで手動でインストールすることもできます。

このプラグインはIDAのユーザープラグインディレクトリにインストールすることを__強く__お勧めします。

root@kitploit:~
import ida_diskio, os; print(os.path.join(ida_diskio.get_user_idadir(), "plugins"))

使い方

パッチプラグインは、サポートされているアーキテクチャ(x86/x64/Arm/Arm64)で自動的にロードされ、IDA逆アセンブリビューの右クリックコンテキストメニューに関連するパッチアクションを注入します。

パッチプラグインの右クリックコンテキストメニュー

コンテキストパッチアクションの完全な一覧は、以下のセクションで説明します。

アセンブル

メインのパッチダイアログは、右クリックコンテキストメニューの「Assemble」アクションから起動できます。これは、1つまたは複数の命令を連続して編集するために使用できる基本的なIDA逆アセンブリビューをシミュレートします。

インタラクティブパッチダイアログ

アセンブリ行は、命令をリアルタイムで変更するために使用できる編集可能なフィールドです。Enterキーを押すと、入力された命令がデータベースにコミット(パッチ)されます。

現在の位置(カーソル)は常に緑色でハイライトされます。パッチ/編集の結果として上書きされる命令は、パッチをコミットする前に赤色でハイライトされます。

パッチによって上書きされる追加の命令が赤色で表示される

最後に、編集可能なアセンブリテキストフィールドにフォーカスがある状態でUPキーとDOWNキーを使用すると、マウスを使わずに逆アセンブリビューの上下にカーソルをすばやく移動できます。

NOP

最も一般的なパッチアクションは、1つ以上の命令をNOPに置き換えることです。このため、NOPアクションは常に右クリックメニューに表示され、すばやくアクセスできます。

右クリックNOP命令

個々の命令、および選択した範囲の命令をNOPにすることができます。

条件付きジャンプの強制

条件付きジャンプを常に「良い」パスを実行するように強制することも、もう1つの一般的なパッチアクションです。このプラグインは、条件付きジャンプ命令を右クリックした場合にのみ、このアクションを表示します。

条件付きジャンプの強制

条件付きジャンプを絶対に実行させたくない場合は、代わりにNOPにすることもできます。

保存とクイック適用

パッチは、いつでもパッチサブメニューから選択した実行可能ファイルに保存(適用)できます。クイック適用アクションを使用すると、同じ設定で後続のパッチをさらに速く保存できます。

元の実行可能ファイルへのパッチの適用

また、プラグインは元の実行可能ファイルのバックアップ (.bak) を保持するよう積極的に努め、保存時にデータベースの現在のパッチセットを「クリーンに」適用するために使用します。

パッチの元に戻す

最後に、パッチに満足できない場合は、パッチが適用された(黄色の)命令ブロックを右クリックするだけで、元の値に戻すことができます。

パッチの元に戻す

バイトを元の値に戻すのは「簡単」ですが、解析を以前の状態に復元するのは「難しい」場合があります。パッチを元に戻すには、場合によっては追加の手動修正が必要になることがあります。

既知のバグ

  • ARM / ARM64 / THUMB の正確性をさらに向上
  • cpp::like::symbols(...) / IDB に対する「より良い」動作を定義(現状非常に不安定)
  • 再配置エントリの追加/更新/変更/表示/警告??
  • リネームされたレジスタ(dwarf注釈付きidbなど)への対応?
  • Keystoneでサポートされていない多数の新しい命令(2017年以降)
  • Keystoneによるいくつかの問題のある命令エンコーディング

今後の作業

時間とやる気があれば、今後の作業には以下が含まれる可能性があります。

  • Keystoneがサポートする残りの主要アーキテクチャの有効化:
    • PPC32 / PPC64 / MIPS32 / MIPS64 / SPARC / SystemZ
  • 複数命令アセンブリ(例: xor eax, eax; ret;)
  • 複数行アセンブリ(例: シェルコード / asmラベル)
  • インタラクティブなバイト/データ/文字列編集
  • シンボルヒント / オートコンプリート / ファジーマッチング
  • 編集可能なアセンブリ行のシンタックスハイライト
  • エラー、構文問題などのより良いヒント表示
  • Hex-RaysビューからのNOP/ジャンプ強制(簡単そうに聞こえるが、おそらくかなり難しい!)
  • 「プリティプリント」モードと「生」モードのラジオボタン切り替え?または両方表示?
    root@kitploit:~
    Pretty:  mov     [rsp+48h+dwCreationDisposition], 3
       Raw:  mov     [rsp+20h], 3
    

外部からのコントリビューション、問題報告、機能要望を歓迎します。プルリクエストは、将来のリリースで検討されるように、このリポジトリのdevelopブランチに送ってください。

著者

  • Markus Gaasedelen (@gaasedelen)
ツールをダウンロード