質問

は、実際に私が構築しようとしていますどのようなファイアウォールの一種のようなものです。私のマシンから行くすべての要求を知ってもらうことができるはずです。選択したものを停止することができるはずです。私もこれでおよそ開始する方法を確認していません。私は、フレームワーク2.0とVS 2008/2005を持っています。私は始めることができると私が得ることができる任意のサンプルがある任意の特定のクラスがある場合は私に知らせてください。

役に立ちましたか?

解決

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

他のヒント

このような何かが、あなたが始めるのに役立つことがあります。 http://www.mentalis.org /ソフト/プロジェクト/ PMON /

  

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

マットが言ったように、

、それは本当にNDISにする必要があります。

アルファリリースの段階にそれを得るためにわずか12ヶ月 -

ドライバを開発するために多くの時間を割り当てるようにしてください、私は6をお勧めします。 NDISを扱った私は、それは他のような痛みであるあなたを保証することができます。

あなたが公衆にあなたの製品をリリースする予定がある場合は、

あなたは(WHQL)ドライバが承認を得るために、Microsoftにいくつかの壮大を咳する必要がありますそうでないユーザーが「これの(インストール時に複数の厄介なダイアログでヒットしますソフトウェア)は、さまざまな」批判的に安全ではありません。承認プロセスは、おそらくすぐにXPのために行って、遅いとWindows 2000の使用できなくなりました。 64ビットの承認が別々の支払いです。

あなたはCまだ小さなミスを使用中にロックされ、ブルースクリーン(例えばnull参照又はわずかなバッファオーバーフロー)の形に増幅されます。あなたは、あなたのAPIは、通常のユーザーモードAPI 100%よりも異なっており、実際にユーザーモードと通信しようとすると、背筋がチクチクするIRPシステムを扱う意味し、スレッドを作成することはできません。

NDIS自体は悪く、MFC-スタイルのように、過剰設計です。あなたが(レジストリへのアクセスのように、いくつかのものを非常に困難にする)カーネルAPIのサブセットに制限されています。インスタントWHQL失格でこれを実行に失敗(なしあなたが戻ってあなたのお金を得ることはありません!)。

のコードのすべての行は、それがで実行されているIRQLレベルのために正しく動作していることを確認するために徹底的にチェックする必要があります(これは基本的にあなたのコードは、他のプロセスによって中断されるかどうかを決定します)。ブルースクリーンで誤ったレベルの結果でAPI関数を呼び出します。スタックオーバーフロー(もちろんブルースクリーン)に1000バイト結果 - また、500以上であるスタックに構造体を作成します。あなたは、各機能のいくつかの小さな配分との深いコールスタック15本のラインを持っているときには、一人でいくつかの楽しみデバッグセッションを生成することができます。

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

何年か前、私は、Windowsシステム上のすべてのアプリケーションで使用されているネットワーク帯域幅について知る必要がありました。

私は約束したタスクの大きさに手掛かりがなければ、私は、TDIフィルタドライバを書く方法を学ぶために進めています。

これは、約2年かかりました。二年のフルタイムの、私はいくつかのストック・オプションをオフに住んでいたからです。 NDISは、しかし、TDIよりも簡単です。 Prolly男が言うように、1年間のフルタイムます。

あなたはTDIレベルでファイアウォールものを行うことができますし、(あなたがNDISで行うことができない)アプリケーションとソケットを関連付けることができますので、それは、そこにうれしいです。また、ブロックすることができ、および/または帯域幅の形状が送信されます。あなたは、受信ブロックすることができますが、あなたは(受信コードパスがDISPATCH_LEVELで実行される)一時停止することができていないので、あなたは本当に形状は、TDIで受け取ることができません。私はそれを回避する方法を考え出し、それに特許を取ったが、私は技術的なPOVからそれをお勧めしません。

大藤本当のハッカーは単にTDIをバイパスし、NDISドライバに直接話をします。 TDIファイアウォールがバイパスされます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top