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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ScratchABit — 簡単にリターゲット可能でハック可能な対話型逆アセンブラ、IDAPython互換のプラグインAPIを搭載 | Kitploit
ツール/GitHubGitHub/pfalcon/scratchabit
静的分析リバースエンジニアリングデバッガバイナリ解析
GitHubpfalcon/scratchabit

ScratchABit

簡単にリターゲット可能でハック可能な対話型逆アセンブラ、IDAPython互換のプラグインAPIを搭載

リポジトリを見る
413485年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

ScratchABit

ScratchABit は、データ/制御フロー解析機能を備えたインタラクティブなインクリメンタル逆アセンブラです。ScratchABit は、オープンソースリバースエンジニアリングコミュニティ(ベンダーが適切にサポートしていないハードウェア向けのオープンソースドライバ/ファームウェアの作成、ハードウェアおよびソフトウェアの相互運用性、セキュリティ研究のためのリバースエンジニアリング)の取り組みに捧げられています。

ScratchABit は、コミュニティでよく知られている IDAPython API をサポートしており、逆アセンブリ/拡張モジュールを作成できます。

ScratchABit は進行中のプロジェクトであり、必要に応じて機能が追加されています。貢献を歓迎します。

ScratchABit は GNU General Public License v3 (GPLv3) の条件の下でリリースされています。

要件/マニフェスト

  1. 難読化された言語で書かれるべきではありません。これには、低レベルすぎる言語、初期化されていない変数にアクセスできる言語、変数と関数/プロシージャを区別しない言語、配列インデックスを任意の数値から開始する言語などが含まれます。ScratchABit は、あなたの快適さと正気のために Python(最新バージョン、Python3)で書かれています。

  2. ユーザーインターフェースフレームワークは、必要なレベルのユーザーインタラクションを可能にし、依存関係、肥大化、問題、フレームワークのバージョン間の非互換性を追加しないようにする必要があります。ScratchABit は現在、ANSI/VT100 ターミナルエスケープシーケンスを使用したシンプルなフルスクリーンテキストユーザーインターフェースを使用しています(はい、curses ライブラリでさえ、ユーザーに強制するには依存関係が大きすぎると判断されました)。

  3. 「データベース」を保存するために使いやすいテキスト形式を活用し、再利用やツール作成、バージョン管理システムへの保存を容易にする必要があります。

インストール

ScratchABit を使用するには、Python3 がインストールされている必要があります(Python 3.3 から 3.7 でテスト済み)。また、VT100(最小)または XTerm(推奨)ターミナルまたはターミナルエミュレータが必要です(Linux/BSD などの Unix システムはすべて対応しているはずです。詳細は以下の FAQ を参照してください)。

以下のコマンドでコードをクローンします:

root@kitploit:~
git clone --recursive https://github.com/pfalcon/ScratchABit

--recursive なしでクローンした場合は、ScratchABit ディレクトリ内で git submodule update --init を実行してください。

ScratchABit には現在、Capstone Engine ベースの CPU プラグインが同梱されており、多くの CPU アーキテクチャにアクセスできます。これを使用するには、Capstone の最新の Python バインディングモジュールをインストールする必要があります(OS ディストリビューションが提供するパッケージはしばしば古いため、そちらよりも推奨されます)。最も簡単なインストール方法は、Python ユーザーパッケージディレクトリにインストールすることです:

root@kitploit:~
pip3 install --no-cache-dir --user capstone

別の方法として、ScratchABit ディレクトリ内の Python 仮想環境 にインストールすることもできます:

root@kitploit:~
python3 -m venv .venv
source .venv/bin/activate
pip3 install --no-cache-dir capstone

ScratchABit を操作する新しいターミナルセッションを開くたびに、仮想環境をアクティブにするために source .venv/bin/activate コマンドを再度実行してください。

上記のいずれも機能しない場合は、capstone パッケージをシステム全体にインストールしてみることもできます(推奨しません):

root@kitploit:~
sudo pip3 install --system capstone

クイックスタート

自己記述形式の実行可能ファイル(ELF など)を逆アセンブルする場合は、ScratchABit.py に引数として渡すだけです。リポジトリには、クイックスタート用にさまざまなアーキテクチャ向けの example-*.elf ファイルが多数含まれています。たとえば、x86 32ビット版を試すには:

root@kitploit:~
python3 ScratchABit.py example-x86_32.elf

あるいは、生のバイナリファイルを逆アセンブルする場合は、コードに対して定義されたメモリ領域、バイナリファイルをロードするアドレスなどを指定するために、.def(定義)ファイルを作成する必要があります(注:.def ファイルは .elf などのファイルにも役立つ場合があります)。リポジトリには、シンプルな x86_64 生バイナリコードと、対応する example-x86_64.def ファイルが含まれています(利用可能なオプションの説明はファイル内を参照):

root@kitploit:~
python3 ScratchABit.py example-x86_64.def

F9 キーを押してメニューにアクセスします(XTerm 互換ターミナルではマウスも使用可能)。F1 キーを押すとキーバインドに関するヘルプが表示されます(ほとんどの操作はメニューからもアクセス可能)。ScratchABit のワークフローは、他のインタラクティブ逆アセンブラと似ています(事前の経験や背景知識があると役立つ場合があります)。

プラグインの使用

IDAPython プロセッサプラグインは、Python モジュールパス上の任意の場所からロードできます。または、プラグインの .py ファイルを plugins/cpu/ サブディレクトリにシンボリックリンクまたはコピーすることもできます。

プラグインを利用可能にした後、example-x86_64.def に基づいて新しい定義ファイルを作成し、cpu xxx 行でプラグインモジュール名(.py 拡張子なし)を設定します。

外部プラグインを使用する非常にシンプルな例については、ida-xtensa2 リポジトリ の xtensa.py プラグインと連携する esp8266.def ファイル を参照してください。

TODO/決定事項

  • 現在は「データベース」に複数のファイルを使用しており、それぞれが特定の種類の情報を保存しています。代わりに単一の YAML ファイルに切り替えるべきか?
  • 色を追加(優先度低、肥大化しないパッチ歓迎)。
  • 快適に作業するために、実装すべき重要な UI コマンドがいくつか残っています。(最も重要なコマンドはすべて揃っているはずで、その他の機能はプラグインを使用して実装されることが期待されています。)
  • 終了時に DB が変更されていたら保存するようにする。
  • DB 保存のための Git 統合。
  • 堅牢性の向上(メインループレベルで例外ハンドラを追加し、アプリケーションを中止せず、ユーザーに表示/ログ出力して続行する)。
  • コードフローの不整合(例:命令内の不整合 - 意図された使用法では優先度低)およびデータアクセスの不整合(例:以前検出されたワードの個別バイトへのアクセス - 優先度高)に対処する。(1.4 で改善。)
  • プロセッサモジュール以外のタイプの IDAPython プラグインをサポートする方法を検討する。
  • ELF などのファイルに存在するデバッグ情報(DWARF など)を解析して利用する。

FAQ

Q: どのプロセッサ/アーキテクチャがサポートされていますか?

A: ScratchABit はそれ自体ではプロセッサアーキテクチャをサポートしておらず、IDAPython API プラグインを使用して完全に再ターゲット可能です。多くのプラグインが利用可能で、新しいプラグインの作成は簡単です。ユーザーが ScratchABit を試用できるように、内部で Pymsasid 逆アセンブラを使用したシンプルな x86 プロセッサプラグインがディストリビューションに含まれています。

バージョン 2.0 からは、Capstone プラグインも含まれており、x86、ARM、MIPS、PowerPC、SPARC など、多数のアーキテクチャにアクセスできます(アーキテクチャサポートはユーザーテストに基づいて段階的に有効化されます)。

ScratchABit に同梱されているプラグインについては、plugins/cpu/ ディレクトリの README をご覧ください。

Q: デバッガは?

A: ScratchABit は静的解析と新しい CPU アーキテクチャの容易なサポートに特化しています(新しい CPU プラグインを Python でコーディングするだけで、数時間で最初の結果が得られます)。動的解析はコア機能として想定されておらず、すぐに実装する計画はありません。ただし、パッチは歓迎します。

Q: 逆コンパイラは?

A: 深いプログラム解析、変換、逆コンパイルのための関連プロジェクト ScratchABlock があります。ScratchABlock が成熟するにつれて、その機能の一部が(おそらくプラグインを介して)ScratchABit 内で利用可能になることが期待されています。

Q: Linux を使用していませんが、ScratchABit を実行するにはどうすればよいですか?

A: システム上でエミュレータ/VM に Linux をインストールして喜んでください。

Q: 必須のスクリーンショットは?

A: もちろん:

screenshot

ツールをダウンロード