1

私の学期プロジェクトは、ネットワーク レベルのマルウェア対策 S/W です。主なコンポーネントは Manager と Agent です。Agent は Manager に次のものを提供します。

1. CPU usage, Memory usage and B/W usage information

2. Network related Information - 

    Network Profiling
    Function calls from Network Sockets
    TCP packets related information

3. Disk Related Information - 

    I/O monitoring
    File Read/Writes
    File Attribute changes

4. General Profiling

    Function calls
    Call Graph
    Frequently used system calls
    call volume per process

これら 4 つの機能はそれぞれスレッドとして実装されます。私たちのプラットフォームは Linux です。systemtap というツールが見つかりました...

http://sourceware.org/systemtap/SystemTap_Beginners_Guide/useful-systemtap-scripts.html

top、ifstat、tcpdump などの Linux コマンドを悪用するよりも、これがより良い代替手段であることがわかりました。実際には、エージェント Java プログラムからスクリプトまたは実行可能ファイルを呼び出すだけです。

「systemtap」で使用されるすべてのスクリプトは、systemtap スクリプト言語で記述されています。フロントエンド ツール (stap) は、このスクリプトを C コードに変換し、カーネル ファイルにコンパイルします。

stap --tmpdir=/home/test/nettop.stp

上記のコマンドを使用して、変換された C コード ファイルを取得することができました。ただし、依存関係の問題により、ファイルはコンパイルされません。

gcc nettop.c nettop.c:10:29: 致命的なエラー: runtime_defines.h: そのようなファイルまたはディレクトリのコンパイルは終了しませんでした。

gcc -B /usr/share/systemtap/runtime/ -B /usr/src/kernels/3.3.1-3.fc16.x86_64/include/ nettop.c nettop.c:10:29: 致命的なエラー: runtime_defines.h : そのようなファイルまたはディレクトリのコンパイルは終了しませんでした。

gcc --sysroot=/usr/ nettop.c nettop.c:10:29: 致命的なエラー: runtime_defines.h: そのようなファイルまたはディレクトリのコンパイルは終了しませんでした。

systemtap ランタイム ヘッダーはすべて、systemtap のクラスパスが /usr/../../../../include まで設定されていることを示すlinux/header形式を使用します。すべてのヘッダーを特定のフォルダーにコピーするのは簡単ですが、正しいパス名を反映するようにヘッダーを編集することはできません。1000 を超える Linux ヘッダーを参照する 106 のランタイム ヘッダーがあります。

を。gcc で特定のフォルダをライブラリとして使用するにはどうすればよいですか?

b. このエージェント アーキテクチャに代わるより良い方法はありますか?

PS: 質問が漠然としすぎていないことを願っています。事前に返信いただきありがとうございます。

4

1 に答える 1

0

systemtap の中間 C コードを手作業でコンパイルしようとしないでください。代わりに、stap (または staprun を介してコンパイルされた .ko) を介してスクリプトを実行し、stdout を介してそれらの出力を消費します。

于 2012-07-11T13:15:04.790 に答える