2

実際、私が構築しようとしているのは一種のファイアウォールのようなものです。私のマシンからのすべてのリクエストを知ることができるはずです。選択したものを停止できるはずです。これから始める方法すらわかりません。フレームワーク2.0を搭載したVS2008/2005を使用しています。私が始めることができる特定のクラスがあり、私が得ることができるサンプルがあるかどうか私に知らせてください。

4

4 に答える 4

4

ファイアウォールは、実際にはネットワークスタックのかなり低い位置に実装する必要があります。NDISを強くお勧めします。この記事は興味深いかもしれません。

于 2009-01-27T02:29:14.813 に答える
3

このようなものはあなたが始めるのを助けるかもしれません:http ://www.mentalis.org/soft/projects/pmon/

このC#プロジェクトにより、Windows NT管理者は、コンピューター上のネットワークインターフェイスの1つを介して送信されたIPパケットを傍受できます。これは、ネットワークソフトウェアをデバッグしたり、信頼できないアプリケーションのネットワークアクティビティを監視したりするのに非常に便利です。

于 2009-01-27T02:29:19.540 に答える
2

マットが言ったように、それは本当に NDIS でなければなりません。

ドライバーの開発には多くの時間を割いてください。アルファ リリースの段階まで 6 ~ 12 か月かかることをお勧めします。NDIS に対処したことで、それが他に類を見ない苦痛であることを保証できます。

製品を一般にリリースする予定がある場合は、ドライバの承認 (WHQL) を取得するために Microsoft に多額の資金を提供する必要があります。そうしないと、インストール時に複数の不快なダイアログが表示されます (「このソフトウェアは非常に重要です」安全でない」品種)。承認プロセスは遅く、Windows 2000 では使用できなくなりました。XP では間もなくなくなる可能性があります。64 ビット承認は別料金です。

あなたは C を使用することに固執していますが、小さなミスがブルー スクリーンの形に増幅されます (null 参照やわずかなバッファ オーバーフローなど)。スレッドを作成することはできません.APIは通常のユーザーモードAPIとは100%異なり、実際にユーザーモードと通信しようとすると、背筋がゾクゾクするIRPシステムを処理することになります.

NDIS 自体は、MFC スタイルの悪い方法で過度に設計されています。カーネル API のサブセットに制限されています (これにより、レジストリ アクセスなど、いくつかのことが非常に困難になります)。そうしないと、即座に WHQL の資格が剥奪されます (お金は戻ってきません!)。

コードのすべての行を徹底的にチェックして、実行中の IRQL レベルで正しく動作していることを確認する必要があります (基本的には、コードが他のプロセスによって中断される可能性があるかどうかを判断します)。間違ったレベルで API 関数を呼び出すと、ブルー スクリーンが表示されます。また、スタック上に 500 ~ 1000 バイトを超える構造体を作成すると、スタック オーバーフローが発生します (もちろんブルー スクリーン)。それだけで、コール スタックが 15 行の深さで、各関数にいくつかの小さな割り当てがある場合、いくつかの楽しいデバッグ セッションを作成できます。

それにも関わらず、また NDIS は 6 回の改訂を経てきましたが、挑戦したいのであれば、本当にやる価値があります。報酬は、他の多くの人があえてそのようなことに巻き込まれることはないため、売れ行きの良いソフトウェア製品です. 重要な要件の 1 つは、アセンブリ言語 (デバッグ用) の知識です。Windows カーネルの仕組みについて読むことも非常に役立ちます (NDIS だけではありません)。

于 2009-03-18T10:59:11.087 に答える