1

いくつか読んだ後、LKM を介して新しいシステムコールを追加することが 2.6 で難しくなっていることがわかりました。syscall テーブルがエクスポートされなくなったため、実行時に新しい呼び出しを挿入する (不可能?) ようです。

私が達成したいことは次のとおりです。

特定のタスクを実行しているカーネル モジュールがあります。このタスクは、ユーザー ランド プロセスによって提供される入力に依存します。この情報は、モジュールに到達する必要があります。この目的のために、カーネルモジュールに実装され、ユーザーランドプロセスから呼び出し可能な新しいシステムコールを導入します。

新しい syscall を追加するためにカーネルを再コンパイルする必要がある場合は、実際の syscall ロジックをカーネル モジュールの外部に記述する必要もありますよね?

これを行う別の方法はありますか?

乾杯、イークナイ

4

2 に答える 2

5

システムコールは、この種の作業に適したインターフェイスではありません。少なくとも、それがカーネル開発者がシステムコールの追加を困難にした理由です。

ユーザースペースとカーネルモジュール間でデータを移動するには、さまざまな方法があります。procおよびsysfs疑似ファイルシステム、charデバイスインターフェイス(読み取りまたは書き込みまたはioctlを使用)、またはローカル疑似ネットワークインターフェイスnetlinkです。

どちらを選択するかは、送信するデータの種類によって異なります。少量のデータのみを渡す場合は、おそらくproc/sysfsのみを使用する必要があります。大規模な一括転送には、charデバイスまたはnetlinkの方が適しています。

于 2011-02-21T20:40:42.873 に答える
0

不可能です -- いいえ。AV モジュールとルートキットは常にそれを行います。

于 2011-02-21T22:18:22.130 に答える