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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Process-Dump — メモリからマルウェアのPEファイルをディスクにダンプし、解析するためのWindowsツール。 | Kitploit
ツール/GitHubGitHub/glmcdona/process-dump
メモリフォレンジックリバースエンジニアリングフォレンジックマルウェア分析バイナリ解析
GitHubglmcdona/process-dump

Process-Dump

メモリからマルウェアのPEファイルをディスクにダンプし、解析するためのWindowsツール。

リポジトリを見る
1.9k2832417日前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
ウェブサイト

Process Dump

Process Dumpは、マルウェアのメモリコンポーネントを分析のためにディスクへダンプするWindowsリバースエンジニアリング用のコマンドラインツールです。マルウェアファイルは、AVスキャナを回避するために実行前にパックや難読化が施されていることがよくありますが、これらのファイルが実行されると、クリーンな状態のマルウェアコードをメモリ内で展開したりインジェクトしたりすることがよくあります。マルウェア研究者がマルウェアを分析する際の一般的な作業は、この展開されたコードをメモリからディスクへダンプし、AV製品によるスキャンやIDAなどの静的解析ツールによる分析に供することです。

Process DumpはWindows 32ビットおよび64ビットのオペレーティングシステムで動作し、特定のプロセスまたは現在実行中のすべてのプロセスからメモリコンポーネントをダンプできます。Process Dumpはクリーンハッシュデータベースの作成と使用をサポートしているため、kernel32.dllなどの既知のファイルのダンプをスキップできます。主な機能は以下のとおりです:

  • 特定のプロセスまたはすべてのプロセスからコードをダンプします。
  • プロセスに適切にロードされていない隠しモジュールを検出してダンプします。
  • PEファイルに関連付けられていない場合でも、散在するコードチャンクを検出してダンプします。チャンク用のPEヘッダーとインポートテーブルを構築します。
  • 積極的なアプローチでインポートを再構築します。
  • クローズダンプ監視モード(-closemon)で実行でき、フックされたプロセスは終了直前に一時停止されてダンプされます。
  • マルチスレッド対応のため、実行中のすべてのプロセスをダンプする場合でもかなり高速に処理されます。
  • クリーンハッシュデータベースを生成できます。クリーンなシステム上で生成しておくことで、以降のダンプ時に既知のモジュールをスキップできます。

公式のコンパイル済みリリースを私のウェブサイトで保守しています: https://split-code.com/processdump.html

インストール

Process Dumpの最新のコンパイル済みリリースはこちらからダウンロードできます:

  • https://github.com/glmcdona/Process-Dump/releases

64ビットWindowsではpd64.exe(推奨)、32ビットWindowsではpd32.exeを使用してください。どちらのバイナリもスタンドアロンであり、Microsoft Visual C++ 再頒布可能パッケージは不要です。

コマンドライン引数

Process Dumpは、メモリからすべての未知のコードをダンプする(-system)、特定のプロセスをダンプする、またはプロセスを監視して終了前にダンプすることができます。

クリーンなワークステーション上で、次のいずれかの方法でベースラインデータベースを生成します:

  • pd64.exe -db genquick
  • pd64.exe -db gen

データベースの生成とダンプは別々のコマンドとして実行してください。最良のアクセスのため、管理者として実行してください。デフォルトのワーカー数は16です。

使用例:

  • pd64.exe -system
  • pd64.exe -pid 419
  • pd64.exe -pid 0x1a3
  • pd64.exe -pid 0x1a3 -a 0x401000 -o C:\dumps
  • pd64.exe -p "chrome[.]exe"
  • pd64.exe -p ".*chrome.*"
  • pd64.exe -closemon

一般的なダンプオプション

オプション説明
-systemアクセス可能なすべてのプロセスから、クリーンハッシュデータベースに一致しないモジュールおよび散在するコードをダンプします。
-pid <pid>特定のプロセスをダンプします。10進数、または16進数のPIDには0xプレフィックスを使用します。
-closemonプロセスの終了をフックし、終了前にダンプします。制御された環境で使用してください。停止するにはCtrl+Cを押します。
-p <regex>プロセス名全体が大文字と小文字を区別する正規表現に一致するプロセスをダンプします。複数一致した場合は確認を求められます。
-a <address>指定されたベースアドレスでダンプします。-pidが必要です。10進数または0xプレフィックス付きの16進数を受け付けます。
-o <path>出力フォルダを設定します(デフォルト: 現在の作業ディレクトリ)。フォルダを事前に作成してください。既存のファイルは上書きされません。

クリーンハッシュデータベースオプション

データベースファイルはデフォルトでアプリケーションディレクトリに作成されます: clean.hashes、entrypoints.hashes、shortentrypoints.hashes。

オプション説明
-db gen実行中のプロセスと、%WINDIR%、%USERPROFILE%、C:\Program Files、C:\Program Files (x86) 内の PE ファイルから再帰的にハッシュを追加します。
-db genquick実行中のプロセスのみからハッシュを追加します。gen より高速ですが、網羅性は低くなります。
-db add <dir>指定したディレクトリ内の PE ファイルハッシュを再帰的に追加します。エントリポイントシグネチャも含みます。
-db remove <dir>, -db rem <dir>ディレクトリ内から一致するクリーンモジュールのハッシュを再帰的に削除します。エントリポイントシグネチャは保持されます。
-nrデータベースの追加/削除コマンドで再帰を無効にします。-db gen には影響しません。
-db cleanエントリポイントシグネチャを含む3つのデータベースすべてを消去します。
-db ignoreファイルを変更せずに、このダンプで読み込まれた3つのデータベースすべてを無視します。実行中に重複モジュールがスキップされる場合があります。
-cdb <filepath>, -c <filepath>クリーンハッシュデータベースのパスを設定します。
-edb <filepath>エントリポイントハッシュデータベースのパスを設定します。
-esdb <filepath>ショートエントリポイントハッシュデータベースのパスを設定します。

出力オプション

オプション説明
-v詳細な診断情報を出力します。
-nhバージョン/著作権のバナーを非表示にします。
--help, -help, -h, --hヘルプを表示して終了します。引数なしで実行した場合もヘルプが表示されます。

詳細オプション

オプション説明
-g既存のヘッダーを無視して、32ビットと64ビット両方の PE ヘッダーの生成を強制します。
-eprec有効なエントリポイントが存在する場合でも、エントリポイントの復元を強制します。復元はヒューリスティックであり、検索に失敗した場合は元の値が変更されません。
-ni積極的なインポート再構築を無効にします(デフォルトで有効)。
-ncルースコードのダンプとハッシュ化を無効にします(デフォルトで有効)。
-nepエントリポイントの復元とライブエントリポイントのハッシュ化を無効にし、-eprec を上書きします。ファイルデータベースの生成では引き続きエントリポイントシグネチャが収集されます。
-reexecダンプの再実行に向けた実験的な準備を行います。キャプチャされた一部の状態を破棄し、元のセクションレイアウトを前提とします。ダンプの実行は行わず、動作を保証するものでもありません。デフォルトでは無効です。
-ntワーカーを1つ使用します。-t 1 と同等です。クローズ監視には別途監視スレッドが存在します。
-t <count>システムダンプ、データベース生成、クローズ監視のワーカー数を設定します(デフォルト16、最小1)。PID/名前を直接指定するダンプは同期的に実行されます。最後に指定された -t/-nt が有効になります。

使用例

コマンド説明
pd64.exe -db genquick現在実行中のプロセスからベースラインを素早く構築します。
pd64.exe -system -t 4 -o C:\dumps4つのワーカーで未知のモジュールとルースコードを既存の出力フォルダにダンプします。
pd64.exe -closemon終了監視モードで実行します。
pd64.exe -pid 0x18A特定のプロセスからモジュールとルースコードをダンプします。
pd64.exe -p ".*chrome.*"名前に chrome を含むプロセスをダンプします。
pd64.exe -db gen実行中のプロセスと一般的なフォルダから、より完全なベースラインを構築します。
pd64.exe -db add C:\baseline -nrサブディレクトリを検索せずに、ディレクトリ内の PE ファイルを追加します。
pd64.exe -pid 0x1a3 -a 0x401000特定のアドレスでダンプします。PE ヘッダーが存在しない場合は、32ビットと64ビット両方のヘッダーを生成します。

サンドボックスでの使用

マルウェア解析では、隔離されたラボを使用し、Process Dump を管理者として実行してください:

  • サンプルを持ち込む前に、pd64.exe -db gen または pd64.exe -db genquick でクリーンハッシュデータベースを構築します。
  • pd64.exe -closemon を実行し続けて、フックされたプロセスが終了する際にキャプチャします。
  • pd64.exe -system を使用して、まだ実行中のプロセスをダンプします。
  • Ctrl+C を押して監視を停止します。

-o を設定しない限り、ダンプは作業ディレクトリに書き込まれます。ダンプは非公開に保ってください。ダンプは解析用であり、実行可能であることは保証されません。256 MiB を超えるイメージは拒否されます。

ダンプされたモジュールの命名規則に関する注意事項:

  • モジュール名の代わりに hiddenmodule と表示される場合は、そのモジュールがプロセス内で適切に登録されていなかったことを示します。
  • codechunk は、PE ヘッダを持たない独立した実行可能領域からのダンプを意味します。これらは x86 と x64 のヘッダを再構築した上で、2 回ダンプされます。

ファイル名の例:

  • notepad_exe_PID2990_hiddenmodule_16B8ABB0000_x86.dll
  • notepad_exe_PID3b5c_notepad.exe_7FF6E6630000_x64.exe
  • notepad_exe_PID2c54_codechunk_17BD0000_x86.exe
  • notepad_exe_PID2c54_codechunk_17BD0000_x64.exe

バージョン履歴

バージョン 3.0.0 (2026年10月2日)

  • サイズ超過および空のダンプを修正し、セクションとインポートの再構築を改善しました。
  • エントリポイントの復元を改善しました。
  • システムダンプとデータベース生成を高速化しました。
  • セキュリティと信頼性の問題を修正し、自動テストを追加しました。

バージョン 2.1 (2017年2月12日)

  • 場合によっては最後のセクションが代わりにゼロで埋められてしまうバグを修正しました。この問題を報告してくれた megastupidmonkey に感謝します。
  • 64 ビットのベースアドレスが 32 ビットアドレスに切り詰められてしまうバグを修正しました。現在は 64 ビットのモジュールベースアドレスを完全に保持します。この問題を報告してくれた megastupidmonkey に感謝します。
  • プロセスダンプのクローズモニターが csrss.exe をクラッシュさせる問題に対処しました。
  • クローズモニターモードで Process Dump が自身のプロセスをフックしないようにしました。

バージョン 2.0 (2016年9月18日)

  • 新しいフラグ '-closemon' を追加しました。これは Process Dump を監視 モードで実行します。プロセスが終了しようとすると、そのプロセスを一時停止してダンプします。これは マルウェア分析サンドボックスとうまく連携するように設計されており、悪意のあるプロセスが終了する前に メモリからマルウェアを確実にダンプできるようにします。
  • Process Dump をマルチスレッド化するようアップグレードしました。複数のプロセスをダンプしたり ハッシュを取得したりするコマンドは、操作ごとに別々のスレッドで実行されます。 デフォルトのスレッド数は 16 で、これにより一般的な Process Dump のダンプ処理が大幅に高速化されます。
  • Process Dump をアップグレードし、メモリ内で見つかった未接続のコードチャンクをダンプするようにしました。 これらは、モジュールに接続されておらず、PE ヘッダを持たないメモリ内の実行可能領域として 識別されます。また、ノイズを減らすため、コードチャンクが有効と見なされるには 少なくとも 2 つのインポートを参照している必要があります。ダンプ時には、PE ヘッダが インポートテーブルとともに再作成されます。コードチャンクはクリーンハッシュデータベースによって完全にサポートされています。
  • クリーンハッシュデータベースへのファイルパスと、ダンプされたファイルの出力フォルダを 制御するフラグを追加しました。
  • クラッシュを引き起こしていた、ユーザーパスからのクリーンハッシュデータベース生成の 修正。
  • PE ヘッダの生成を強制するフラグ '-g' の修正。以前はこのフラグが設定されていても、 システムダンプ (-system) はプロセスをダンプする際にこのフラグを無視していました。
  • さまざまなパフォーマンスの改善。
  • プロジェクトを VS2015 にアップグレードしました。

バージョン 1.5 (2015年11月21日)

  • 非常に大きなメモリ領域が Process Dump をハングさせるバグを修正しました。
  • 64 ビット Windows で、高いアドレスにある一部のモジュールが見つからないバグを修正しました。
  • 詳細モードでより多くのデバッグ情報が出力されるようになりました。

バージョン 1.4 (2015年4月18日)

  • 新しい積極的なインポート再構築アプローチを追加しました。モジュール内のすべての DWORD と QWORD を、対応するエクスポートの一致にパッチします。
  • 特定のアドレスをダンプする '-a (ダンプするアドレス)' フラグを追加しました。PE ヘッダを生成し、そのアドレスのインポートテーブルを構築します。
  • 新しいインポート再構築アルゴリズムをスキップする '-ni' フラグを追加しました。
  • モジュールをダンプする際に既存の PE ヘッダがあっても、新しい PE ヘッダの生成を強制する '-g' フラグを追加しました。これは例えば PE ヘッダが不正な場合に有効です。
  • さまざまなバグ修正。

バージョン 1.3 (2013年10月10日)

  • 無効な仮想サイズとアドレスを指定するセクションを持つ PE ヘッダの処理を改善しました。
  • 仮想セクションをディスクセクションまでダンプするための、より優れたモジュールダンプ手法。

バージョン 1.1 (2013年4月8日)

  • Windows XP との互換性の問題を修正しました。
  • プロセスダンプがモジュールをダンプしていると表示しながら実際にはダンプしないバグを修正しました。
  • '-pid ' ダンプフラグを実装しました。

バージョン 1.0 (2013年4月2日)

  • 初回リリース。

ソースコードのコンパイル

Visual Studio 2019 または 2022 (Community エディションでも可) で pd.sln を開きます。デスクトップ開発の C++ ワークロードと Windows SDK がインストールされている必要があります。Win32 または x64 向けに Release をビルドします。Release ビルドはランタイムを静的リンクします。

Visual Studio Developer PowerShell からテストをビルドして実行するには:

msbuild pd.sln /m /p:Configuration=Release /p:Platform=x64
.\x64\Release\pd_tests.exe
ツールをダウンロード