問題タブ [kernel-mode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
6491 参照

kernel - osdevを学習するのに十分な小さなカーネルはありますか?

osdevについてもっと知りたいです。そこで、osdevをより良くするために、他の小さなカーネルから学ぶことを考えました。osdevを学習するための良いカーネルはありますか?もちろん、ソースコードにアクセスして自由に変更できるように、GPLである必要があります。

0 投票する
2 に答える
3726 参照

c - ドライバーからポップアップ メッセージ ボックスを表示する方法 (カーネル モード)?

ユーザーにイベントを通知するためにダイアログをすぐにポップアップする必要があるドライバーを作成しています。
(これがファイルシステム関連のドライバーではないことを除いて、NTFS の「破損したファイル」通知に似ています。)

私は知ってExRaiseHardErrorおりIoRaiseInformationalHardError、トリックを実行できるはずですが、機能していないようです-実際には何もせずに「正常に」返されます。

これを行うにはどうすればよいですか (ユーザー モード プログラムを作成せずに)。


コードのユーザー モードバージョン (正しく動作します) を以下に示します。

カーネル モード バージョンでは、ExRaiseHardError代わりにを呼び出しますNtRaiseHardErrorが、まったく同じ方法で呼び出します。

0 投票する
1 に答える
2654 参照

operating-system - カーネルモードからユーザーモードに戻る

Unixカーネルのモードスイッチの理解について少し混乱しています。私はここで私の理解を与え、議論/修正のためにそれを開きます。

ユーザーモードからカーネルモードに移行している間、プロセッサはプロセスごとのユーザースタックとプロセスごとのカーネルスタックを切り替えます。次に、プロセスごとのユーザースタックセグメントセレクターとスタックポインターがカーネルスタックに格納され、eip命令ポインター(ユーザーモードでのリターンアドレス)とその他のハードウェアレジスタがカーネルスタックにプッシュされます。

カーネルがユーザーモードに戻る必要がある場合、trapretコードはカーネルスタックに格納されているすべての値をハードウェアレジスタにポップバックします。

カーネルスタックから値をポップするtrapret

ただしiret、カーネルスタックからeipをポップする場合、実行する必要がある次の命令は、ユーザーモードのリターンアドレスです。

これは、カーネルスタックの他の値を完全にポップすることなく発生します。

残りの値()はどのよう%cs, %eflags, %esp, %ssに復元されますか?

カーネルスタックに存在するuser-stack-pointerはどのように%espにポップバックされますか?

ユーザーモードからカーネルモードへの移行中のトラップフレーム

0 投票する
1 に答える
836 参照

hook - SDT カーネル モードのフック

API 呼び出しをグローバルに正常にフックするための実験を行っており、SDT (サービス記述子テーブル) とカーネル モード ドライバーについてどこかで読みました。

この種のフックは、user32.dll などに存在する呼び出しに対して機能しますか?

0 投票する
1 に答える
751 参照

debugging - WinDbgとVirtualboxおよびマシンスナップショット-カーネルデバッグの再接続を強制します

したがって、virtualboxの優れた機能の1つは、後で復元できるスナップショットを用意することです。

ただし、virtualboxとwindbgを使用してカーネルのデバッグを行う場合、スナップショットの復元時にデバッグセッションは復元されません。

毎回マシンを再起動する代わりに、マシンのスナップショットを復元するときに、windbgとゲストマシンにそのカーネルデバッグセッションを再同期して再起動させる方法はありますか?

0 投票する
1 に答える
903 参照

driver - 方法 : ユーザー モードとカーネル モードの間で双方向通信を行う

IRP バッファーから値を抽出するドライバーを作成しました。このキーワードに基づいて、IRP を渡すか破棄する必要があります。そのため、カーネル モード ドライバーからは簡単ではないデータベースと通信する必要があります。したがって、これを行うためにアプリケーションまたはexeを使用しています。これは、IRPを渡すか破棄するかに基づいて、trueまたはfalseになります。

クライアントアプリでデータを取得するアプリとドライバを連携させたい。

パイプとして機能する一時ファイルを使用することを考えました。

何か提案してください。

0 投票する
1 に答える
428 参照

c++ - カーネル モードが STL に問題を与えるのはなぜですか?

Microsoft の STL は、講演の中で、STL がカーネル モードで対話する際に問題があることを簡単にほのめかしていました。誰かが彼がそれによって何を意味したか説明してもらえますか?

0 投票する
2 に答える
641 参照

driver - ネットワーク監視に使用するテクノロジ/API/テクニックは何ですか?

さて、私はファイルシステム、レジストリ、およびネットワークアクティビティを監視するユーティリティを構築しています(プロセスごとに、選択したプロセスによるアクティビティのみ)。ミニフィルター ドライバーを開発することで、ファイル システムとレジストリ アクティビティの部分を完成させました。ただし、ネットワークに対してどのようにすればよいかわかりません。私がやりたいことは、sysinternal の TCPView が行うこととよく似ていますが、選択したプロセスによって ESTABLISHED 接続を監視したいだけです。接続ごとにリアルタイムで取得したいものは次のとおりです。

-プロトコル (TCP または UDP)

-送信元ポート

-リモート IP とポート

-[オプション] 監視が開始されてから特定の接続で転送されたバイト数

何を使えばいいですか?LSP について聞いたことがありますが、もう少し詳しく読んでみると、適切に機能する LSP を作成するのは非常に難しいことに気付きました。また、それらが時代遅れになっていること。問題は、このモジュールを学習して書くのに約 2 ~ 3 週間しかないことです。時間制限があるため、WFP のようなものには行きたくありません。ただし、非常に優れたチュートリアルがない限り、MSDN のドキュメントについて話しているわけではありません。これが NDIS などを使用して「簡単に」実行できるかどうかはわかりません。

とにかく、どうしよう、どこに力を注げばいいのか。LSP について学ぶことでリスクを負うべきか、それとも NDIS がタスクを達成するか、または何か他のことを行うべきでしょうか。私は今、ちょっと無知です。ここで私を助けて!

0 投票する
1 に答える
287 参照

driver - pcapnet とパケットのリダイレクト

あるイーサネット インターフェイスのパケットを別のインターフェイスにミラーリング (リダイレクト/転送ではなく) することはできますか? いずれにせよ、ホスト マシンはパケットを処理します。winpcap はフィルターとして介在しないため、パケットをドロップすることはできません。しかし、Winpcap または pcap.net を使用してパケット ミラーリングが可能かどうか疑問に思っていました。

インターフェイス ブリッジに似ています。カスタム NDIS 5/6 フィルター ドライバーを使用することはオプションですが、現在は追求していません。私はこれを厳密にユーザーモードで実行しようとしています.C#を使用できれば幸いです.

Win7x64を使用。