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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
libptrace — イベント駆動型マルチコアプロセスのデバッグ、トレース、および操作フレームワーク。 | Kitploit
ツール/GitHubGitHub/immunityinc/libptrace
動的分析 (サンドボックス)エクスプロイトリバースエンジニアリングデバッガユーティリティとフレームワークバイナリ解析
GitHubimmunityinc/libptrace

libptrace

イベント駆動型マルチコアプロセスのデバッグ、トレース、および操作フレームワーク。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

libptrace

libptrace は、イベント駆動型のプロセス/スレッドのデバッグ、トレース、操作フレームワークです。C で記述されており、Python 2.7 および 3.7 のバインディングを備えています。

ライブラリとして使用することを意図されています。API はクロスプラットフォームのサポートを念頭に設計されています。現在のバージョンは 32 ビットおよび 64 ビット (wow64 対応) の Windows でのみ動作しますが、設計と抽象化は、同じ API の下で他のプラットフォームやリモートデバッグのサポートを追加できるようになっています。

マルチコア/スレッドに対応しており、複数のイベントループを同時に実行するために簡単に使用できます。プロセスグループやパイプラインのデバッグ、または多数のプロセスのトレースは、この方法で実行コアを増やすことでスケーリングできます。

序文

私は libptrace の初期バージョンを 2006 年に大学在学中に書き、2011 年に当時の雇用主である Immunity Inc. のために全権利を再ライセンスしました。この頃、フレームワークは Immunity Debugger に統合される予定でしたが、私は常にフレームワークを独立して使用できるように注意してきました。

この目標を念頭に置いて、Immunity で多くの開発が行われました。勤務時間中に積極的に開発し、フレームワークがより成熟するのを見ることができたことに感謝しています。マルチコア対応、Python バインディングの提供、より良い抽象化の作成に向けて、ほとんどの部分を再設計しました。

x64dbg がリリースされるにつれ、Immunity Debugger の作業は中止し、代わりに他のことに注力することが決定されました。これにより libptrace の開発も停滞し、その後数年間、社内の git リポジトリで埃をかぶっていました。その後、Cyxtera Technologies による Immunity Inc. の買収、現在は Cyxtera Cybersecurity Inc. の下で、プロジェクトを LGPL バージョン 2.1 で公開することが決定され、採用とさらなる開発が行われることを期待しています。

Immunity Inc.、Cyxtera Technologies、Cyxtera Cybersecurity Inc. に、このリリースを実現してくれたことに心から感謝します。また、Dave Aitel 氏には、このリリースを管理レイヤーを通じて推進し、官僚的なプロセスの部分から私を守ってくれたことに特に感謝します。私の労働が無駄になり目的を失うのは悲しいことでしたが、彼らが社内で行われた libptrace の開発をオープンソースとしてリリースする意向がなければ、そうなっていたでしょう。

また、フレームワークの使用や作業に時間を費やした数人の同僚、特に Massimiliano Oldani、Roderick Asselineau、Christos Kalkanis にも感謝します。また、私が最終的に使用した侵入型 AVL ツリーとリンクリストの実装について、Lennert Buytenhek にも感謝します。

プロジェクトに作業が行われてから 4 年以上経過しましたが、人々がこれを有用だと感じることを願っています。設計とソースコードは比較的クリーンであり、現時点ではフレームワークを拡張し、他のプラットフォームに比較的簡単に移植できると考えています。いつかこれが単一の一貫した API の下で真のクロスプラットフォームデバッグライブラリになることを願っています。

最後に、このプロジェクトを亡き娘、Yuzuyu Huizer に捧げます。いつか再会できることを願っています。愛しています。

-- Ronald Huizer [email protected]

ビルド

現在サポートされているビルド方法は、MinGW と CMake を使用したクロスコンパイルです。ビルドシステムは Ubuntu 19.04 でテストされています。

32 ビットインストーラは次のようにビルドできます:

root@kitploit:~
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=mingw-w64-x86.cmake .
make
makensis libptrace-setup.nsi

64 ビットインストーラは次のようにビルドできます:

root@kitploit:~
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=mingw-w64-x64.cmake .
make
makensis -DUSE64 libptrace-setup.nsi

インストール

上記のビルド手順に従うと、32 ビットインストーラは libptrace-setup32.exe、64 ビットインストーラは libptrace-setup64.exe になります。

インストーラは、インストールされている Python のバージョンと、それが 32 ビットか 64 ビットかを自動的に判別します。見つかったバージョンはインストーラによって提供され、見つからなかったバージョンはグレー表示されます。

リリースダウンロードはこちらにあります。

例

doc/ ディレクトリは絶望的に古くなっています。これは、より最新のドキュメントの出発点として含まれています。使用しないでください。

いくつかのサンプルスクリプトは python/scripts ディレクトリにあります。これらは Program Files\Immunity Inc\libptrace に、32 ビット版の場合は Program Files (x86)\Immunity Inc\libptrace にインストールされます。

これらの例はフレームワークを網羅的に示しているわけではありませんが、フレームワークを使用したい人にとって良い出発点となるはずです。C API は十分に文書化されていませんが、いくつかの例は unittests/windows ディレクトリにあります。Python バインディングを含む python/ ディレクトリも良い概要を提供します。最後に、include/libptrace ディレクトリには公開されているヘッダファイルが含まれており、API 関数の良いリストを提供します。

Python API は現在、C API のかなり限定されたサブセットであることに注意してください。

Python の例

例として、実行可能ファイル内の RegOpenKeyExW 呼び出しをトレースする一般的なワークフローは次のようになります:

root@kitploit:~
import _ptrace

def bp_handler(bp, thread):
    (key, subkey, options, sam, result) = _ptrace.cconv.args_get(thread, "%u%p%u%u%p")
    subkey = thread.process.read_utf16(subkey)
    print('T{}: RegOpenKeyEx({}, "{}", 0x{:08x}, 0x{:08x}, 0x{:08x})'
          .format(thread.id, key, subkey, options, sam, result), end='')

def attached_handler(process):
    bp = _ptrace.breakpoint_sw("advapi32!RegOpenKeyExW", bp_handler)
    process.breakpoint_set(bp)

handlers          = _ptrace.event_handlers()
handlers.attached = attached_handler

_ptrace.execv(r"C:\Windows\Notepad.exe", [], handlers, 0)
_ptrace.main()

RegOpenKeyExW の戻り値も必要な場合は、関数呼び出しの戻りアドレスにブレークポイントを設定するのが最も簡単です。これにより、関数の終了パスを静的に決定するためのコード分析が不要になります:

root@kitploit:~
def bp_end_handler(bp, thread):
    print("=", _ptrace.cconv.retval_get(thread))

def bp_handler(bp, thread):
    (key, subkey, options, sam, result) = _ptrace.cconv.args_get(thread, "%u%p%u%u%p")
    subkey = thread.process.read_utf16(subkey)
    print('T{}: RegOpenKeyEx({}, "{}", 0x{:08x}, 0x{:08x}, 0x{:08x})'
          .format(thread.id, key, subkey, options, sam, result), end='')

    retaddr = _ptrace.cconv.retaddr_get(thread)
    if thread.process.breakpoint_find(retaddr) is None:
        bp_end = _ptrace.breakpoint_sw(retaddr, bp_end_handler)
        thread.process.breakpoint_set(bp_end)

著作権

著作権の状況は各ファイルに明確に記載されています。大部分は Cyxtera Cybersecurity Inc.、Ronald Huizer、または両方が同時に保持しています。一部のファイルには、Lennert Buytenhek など、第三者の著作権者がいます。

ライセンス

GNU Lesser General Public License バージョン 2.1 に基づいて配布されています。詳細については、COPYING および COPYING.LESSER を参照してください。

作者

  • Ronald Huizer - プロジェクトの設計と実装
  • Massimiliano Oldani - シンボル処理、バグ修正
  • Roderick Asselineau - PE の改善、区間木、バグ修正
  • Christos Kalkanis - テスト、改善、バグ修正

連絡先

  • Ronald Huizer - [email protected] - @ronaldhuizer

謝辞

  • このリリースを実現してくれた Immunity Inc. および Cyxtera Cybersecurity Inc.
  • 侵入型 AVL ツリーとリンクリストの実装を提供してくれた Lennert Buytenhek
  • このリリースの官僚的および法的な部分に対処してくれた Dave Aitel
ツールをダウンロード