問題タブ [windows-kernel]
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.
assembly - ユーザーモードでスタックを設定する必要がありますか?
私はしばらくの間(実際のモードと保護されたモードの両方で)アセンブリとOSの開発で遊んでおり、カーネルモード(「リング0」、別名「完全な特権」)で作業していたので、以前は常にスタックの設定について心配する必要がありました。スタック命令(プッシュ/ポップ)を使用します。
今、私はユーザーモードの32ビットアセンブリプログラム(WindowsとLinuxの両方)を見てきましたが、私が見たすべてのプログラム例は、最初にスタックを設定せずにスタック命令を使用しただけであることに気付きました。これはどういう意味ですか?OSは、プロセスを開始する前にプロセススタック自体を設定しますか?
前もって感謝します、
ジョアンシルバ。
.net-4.0 - K32EnumProcessModules により、「{dll} によってインポートされたプロシージャを読み込めませんでした」
組織内の他の人によって構築された複数のライブラリに依存するアプリケーションがあり、そのうちの 1 つが機能しなくなりました。コマンドラインで次のエラーが表示されます。
私は Dependency Walker を開いて問題の原因を突き止めようとしましたが、私は Dependency Walker の初心者であり、自分が何をしているのかよくわかりません。ログウィンドウに表示される内容は次のとおりです。
次の点を除いて、これは簡単に思えます。
- DW に慣れていないため、このエラーが実際に参照しているモジュールを見つけることができないようです
- 古いバージョンのアプリケーションに同梱されている同じ DLL は、まだ機能しており、Dependency Walker で同じことを示しています。
古い DLL と新しい DLL の唯一の違いは、新しい DLL では KERNEL32.DLL が赤色で表示され、関数 K32EnumProcessModules が赤色で表示される (エクスポートされていない) ことです。この同じ関数は、古い DLL ではまったく表示されません (緑色またはそれ以外)。
これまでの要約: 1 つの DLL は動作し、もう 1 つは動作しません。どちらも Dependency Walker で「悪い」と表示されますが、関数 K32EnumProcessModules が悪いと表示されるのは 1 つだけです。この関数が「未解決のインポート」エラーの原因であるかどうかはわかりません。調査したいと思います。
これを引き起こした可能性があると思われるアプリケーションで行った唯一の変更は、ランタイムを .NET 2.5 から .NET 4 にアップグレードしたことです。 2.5 以上の .NET コンポーネントを呼び出さないでください。同じライブラリを使用している私の組織の他の人は、.NET 4 で問題なく動作すると報告しています。
ほとんどの場合、どの情報がこの問題のトラブルシューティングに役立つかわからないため、まばらな情報を提供していることに気付きました。詳細を確認するために実行してほしいテストがある場合はお知らせください。
windbg - Linux からの Windows カーネルのデバッグ
以前は、 VirtualKD、WinDBG、および単一の仮想マシンを使用して Windows カーネルをデバッグしていました。
最近 Linux マシンを手に入れたのですが、ホストがVirtualKD/WinDBG*を実行できない場合に Windows カーネルをデバッグする最も簡単な方法は何でしょうか?
ソリューションには 2 つの仮想マシンが必要になると思いますが、別の仮想インスタンス内にインスタンスを配置するのではなく、実際のマシンでホストされている 2 つのインスタンスを使用しています...
とにかくそれを機能させる方法はありますか?
前もって感謝します!
*安定性の理由から、ワインは最後の手段です...
c - Windows の /dev/kmsg と同等ですか?
Windows カーネル ログ、バッチ ファイル、またはコマンド プロンプトからカスタム行を追加したいと考えています。
Linux では、/dev/kmsg
ファイルに書き込むことでこれを行います。そのファイルに書き込まれたものはすべて、dmesg
またはを介して表示されます/var/log/messages
。
例えばecho Hello world > /dev/kmsg
Windows側にも非常に似たものが必要です。
log_to_kernel.exe "my message"
デバイスファイルにリダイレクトするのではなく、 のような解決策があれば私もOKです。Windowsにはデバイス「ファイル」の概念がないと思います。
要件の理由:
ドライバーでいくつかの問題をデバッグしようとしています。そのために、Windows で内部的にドライバーを呼び出すテスト プログラムを実行しています。
ドライバーが失敗した場合、1394 経由で接続されたカーネル windbg でデバッグ メッセージを確認できます。カーネル デバッガーはブレークポイント/アサートにヒットし、続行するまでターゲット システムの反復回数を確認できません。ウィンドバックより。
したがって、時間とテストの反復回数をカーネル ログ自体に記録する必要があります。これは、自動テストを実行するバッチ ファイルを介して行う予定です。
したがって、カスタム メッセージをカーネル ログに記録するツールまたは C コードを使用したダミーのエコー ドライバーが必要です。
1 行で、ユーザー空間アプリからカスタム メッセージをカーネル ログに書き込みたいと考えています。
windows - 一部のマシンでは、WFP カーネル モード ドライバーの DriverEntry の呼び出し方が異なりますか?
自分のアプリケーション用に Windows Filtering Platform MSNMNTR サンプルにコードをいくつか追加しましたが、構造は同じままです。Win8 64 ビット用のドライバーとアプリケーションをコンパイルし、ドライバーに製品署名を付けました。コードをビルドした (仮想) マシンでは、サンプルは正常に動作し、正しく監視されます。inf、sys、および exe を別のマシンにコピーすると、サンプルは監視しません。traceview の出力から、2 番目のマシンでは DriverEntry() が呼び出されていないことがわかります。そのため、フロー制御が設定されていません。2 台のマシンは Win8 のリリース バージョンを実行しています。ドライバーはマシン #1 で正常に動作するため、新しいコードの問題ではないようです。また、マシン #2 で署名の強制をオフにしても、署名の問題ではないようです。問題。コードのリリース バージョンとデバッグ バージョンの両方に同じ問題があります。コードをセットアップして実行するために使用する手順は次のとおりです。この動作を引き起こす可能性のあるものは何ですか?
- ドライバー .pdbs を traceview のフォルダーにコピーします。
- .inf を右クリックし、[インストール] を選択します。
- 昇格したコマンド プロンプトから「net start msnmntr」を実行します。
- 管理者として traceview を起動します。
- 管理者特権でのコマンド プロンプトから "monitor monitor "C:\Program Files\Internet Explorer\iexplore.exe"" を実行します。
PS私はまだこれにwindbgを入れていませんが、試したらすぐに結果で質問を更新します.
編集して追加: OK、両方のマシンでカーネルモード デバッガーを実行したところ、動作に違いが見られました。まず、両方のマシンで DriverEntry が呼び出されます。私はそれについて間違っていました。ただし、コードが機能する (つまり、Web トラフィックを監視する) マシンでは、monitor.exe が実行されると DriverEntry が呼び出され (上記の手順 5)、コードが機能しないマシンでは、「net start msnmntr」(上記の手順 3) が実行されます。
java - ファイルとフォルダの保護プログラム
このプロジェクトは、Java を使用してファイルとフォルダーをロックするセキュリティ プログラムです。次の
2 つのアイデアがあります。
最初: Windows カーネル レベルでファイルまたはフォルダーを非表示にする
現時点では、これを行う方法が見つかりません。
これどうやってするの?役立つヒントはありますか?
別の解決策: 新しい拡張機能を作成します。Windows はパスワードを読み取って閉じることができません。
目的のファイルを zip ファイルに変換し、それをバイトとして読み取り、作成した新しい拡張子のファイルに保存しました。2 つの問題があります。バイトの読み取りに時間がかかり、ファイル サイズが大きい (200 MB を超える) 場合、ランタイム メモリがいっぱいになるとエラーが発生します。
これらの問題をどのように解決しますか?
これらの 2 つの方法以外に、ファイルとフォルダーを保護する方法はありますか??
※不明な点がありましたら、お尋ねください。
手伝ってくれてありがとう
windows - Windows Logo Kit v1.6 - Test Driver for Win7
I've been assigned to download and install the Windows Logo Kit v1.6 to test a driver for Windows 7. What I have done so far is installed the controller and the studio on a clean Windows 2008 R2 64 bit machine. I also have another clean Windows 7 Pro 32 bit as a client. After the installation, the client machine shows in the Studio.
The next step is to install the driver on the client PC. I've tried googling around to find documentation for this part, but I haven't found any.
How do i install the driver on the client PC? Do i just install it the way I always do or is there a special procedures that I need to follow?
At the studio, there so so many tests to run. How do I know which test to select?
windows - カーネル モード ドライバーとユーザー モード アプリケーション間の双方向通信?
カーネル モードの WFP ドライバーとユーザー モードのアプリケーション間の双方向通信が必要です。ドライバーは、アプリケーションに URL を渡すことによって通信を開始し、アプリケーションはその URL の分類 (エンターテイメント、ニュース、アダルトなど) を行い、そのカテゴリーをドライバーに返します。ドライバーはフィルター機能のカテゴリーを知る必要があります。これは、その情報に基づいて特定の Web ページをブロックする可能性があるためです。ドライバーが URL と GUID を使用して完了する I/O 要求を作成するスレッドがアプリケーションにあり、アプリケーションはその GUID の下のレジストリにカテゴリを書き込み、そこでドライバーがそれを取得しました。残念ながら、ドライバーの検証者が指摘したように、Zw レジストリ機能は PASSIVE_LEVEL で実行する必要があるため、これは不安定です。マップされたメモリバッファで同じことをしようと考えていましたが、そのための割り込み要件が何であるかわかりません。また、レジストリ関数呼び出し前の割り込みレベルを下げることも考えましたが、その副作用についてはわかりません。
kernel - FILE_OBJECTが通常のファイルまたはデバイスを表しているかどうかを判断するにはどうすればよいですか?
FILE_OBJECTのMSDNページには次のように書かれています。
「注特定のファイルオブジェクトが表すオブジェクトのタイプ(ファイル、ディレクトリ、ボリュームなど)は、ファイルオブジェクト構造の内容を調べるだけでは判別できません。オブジェクトのタイプを判別する方法については、ファイルオブジェクトが表します。ZwQueryInformationFileを参照してください。」
2つの質問があります:
1、ZwQueryInformationFileを介してオブジェクトタイプを判別する方法は?
2、FILE_DEVICE_CD_ROM_FILE_SYSTEM、FILE_DEVICE_DISK_FILE_SYSTEM、FILE_DEVICE_FILE_SYSTEMなどのDEVICE_TYPEは、信頼性の高い方法で判別できますか?
ありがとう。
kernel - APC が無効になっているときにファイル サイズを照会する方法は?
ミニフィルターの PostCreate 中に、設計上、グローバル プッシュ ロックを使用してスレッドを同期する必要があり、FltQueryInformationFile を呼び出してファイル サイズを照会する必要があります。
でも、
1. FltAcquirePushLockExclusive を呼び出した後、APC 配信が無効になります。
2. APC 配信が無効になっている場合、FltQueryInformationFile は PASSIVE_LEVEL で呼び出す必要があり、APC が有効になっているため、失敗します。
このような場合、どのようにファイル サイズを問い合わせればよいでしょうか。IRP の構築は役に立ちますか?
前もって感謝します。