Unix / Linuxでプロセス間通信を傍受する方法はありますか?

Unix / Linuxでプロセス間通信を傍受する方法はありますか?

ネットワークトラフィックを傍受または分析するために、次のユーティリティがあります。ワイヤーシャーク

Unix / Linuxの2つのプロセス間のすべてのプロセス間通信を傍受する同様のユーティリティはありますか?

私はメモリにいくつかのプロセスを作成しましたが、これらのプロセスが互いにどのように通信するかを分析する必要があります。

ベストアンサー1

多くは通信メカニズムによって異なります。

  • 最も透明な端では、プロセスはインターネットソケットを使用して通信できます(例:知的財産権)。その後、Wiresharkまたはtcpdumpはループバックインターフェイスを指して、すべてのトラフィックを表示できます。

  • 通常のレベルでは、交通管路そしてUnixソケットtruss// / ...を使用して、スイスのチェーンソーシステムの追跡をstrace観察できます。traceしかし、これはプロセスの速度を大幅に遅くし、分析には適さない可能性があります。

  • 最も不透明な端には共有メモリがあります。共有メモリの基本的な動作原理は、関連する各プロセス間のアクセスが完全に透過的であり、共有メモリ領域を確立するためにシステムコールのみが必要であることです。外部からこれらのメモリアクセスを追跡するのは難しい場合があります。特にタイミングを乱すことなく観察する必要がある場合は、そうです。次のツールを試すことができます。Linuxトレースツールキット(カーネルパッチが必要です)有用な情報を抽出できることを確認してください。 Solarisにこれのためのより良いツールがあればと思います(しかし私はそれについて何も知りません)。

    ソースコードがある場合の最良のオプションは、主要なライブラリ関数にトレースステートメントを追加することです。LD_PRELOADこれは、共有メモリにアクセスするプログラム部分の制御フローを十分に理解している限り、(完全な)ソースコードがなくてもトリックを使用して達成できます。

おすすめ記事