私の学期プロジェクトは、ネットワーク レベルのマルウェア対策 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: 質問が漠然としすぎていないことを願っています。事前に返信いただきありがとうございます。