
Dreg が自分用に管理しているリポジトリ
masm32 カーネルプログラミング、ドライバ、チュートリアル、サンプル、ツール(クレジット: Four-F)
この時点で C:\ に .sys ファイルが作成されます
ドライバのロード:
w2k_load.exe または osrloader.exe で beeper.sys のロード時にエラーが表示されますが、無視してください。
このエラーは、ドライバコード自身が実行を終了するときに生成されるものです(このトリックによりアンロードは不要です)
mov eax, STATUS_DEVICE_CONFIGURATION_ERROR
ret
つまり、beep.sys がカーネルに正しくロードされていれば、スピーカーからビープ音が聞こえます(ドライバコードがビープ音を生成します)
ドライバをアンロードする必要がある場合は次を使用します:
Sven B. Schreiber の w2k_load.exe を、Windows 2000 から Windows 10 まで動作するように修正しました(マニフェスト...)
osrloaderv30.zip を解凍し、この GUI プログラムを使用します:
古い Windows の場合、このリポジトリに同梱されている DbgView.exe を使用してください。ちなみに、これは私が修正したものです(マニフェスト...)
最新の Windows の場合は、sysinternals の Web サイトから最新の dbgview.exe を使用し、トラブルシューティングについては以下を確認してください:
このリポジトリ内の .pdf ファイルを読み、KmdKit18/examples ディレクトリのサンプルを確認してください
警告: すべての ASM ソースコードは .bat ファイル内にあります(バッチ + ASM コードが同じファイルに混在しています)
advanced\FindShadowTable\FindShadowTable.bat の例
;@echo off
;goto make
ASM DRIVER CODE GOES HERE
:make
set drv=FindShadowTable
\masm32\bin\ml /nologo /c /coff %drv%.bat
\masm32\bin\link /nologo /driver /base:0x10000 /align:32 /out:%drv%.sys /subsystem:native %drv%.obj
del %drv%.obj
echo.
pause
このファイルには、.sys を生成する BATCH コードと、ドライバ自身のソースコードの両方が含まれています。 つまり、その通り、非常に巧妙で、ビルドスクリプトとソースコードが一緒になっています
ServiceDescriptorTableShadow を見つける方法のサンプルです。
ID 80h~400h のスレッドをスキャンして、KTHREAD.ServiceTable が KeServiceDescriptorTable と等しくないスレッドを見つけようとします。そのようなスレッドが見つかった場合、その KTHREAD.ServiceTable が ServiceDescriptorTableShadow のアドレスを保持しています。
ドライバのデバッグ出力は DbgView(www.sysinternals.com)または SoftICE で確認してください。
テスト済み: Windows 2000、XP、Server 2003
これは、シンプルなレガシー(非 PnP)PS/2 キーボードフィルタドライバのサンプルです。 警告: USB キーボードスタックにはアタッチできません。
テスト済み: Windows 2000、XP、Server 2003
Four-F、[email protected]。これらのマクロファイルは私のパッケージ cocomac のものです。
これは、シンプルなレガシー(非 PnP)PS/2 マウスフィルタドライバのサンプルです。 警告: USB マウススタックにはアタッチできません。
テスト済み: Windows 2000、XP、Server 2003
IoCreateDevice の代わりに IoCreateDeviceSecure を呼び出すことによって、 名前付きデバイスオブジェクトに特定のセキュリティ設定を適用する方法のサンプルです。
IoCreateDeviceSecure ルーチンはオペレーティングシステムの一部ではないため、 必要なルーチンをすべて含む wdmsec.lib をリンクします。
ここにある wdmsec.lib ライブラリは DDK に同梱されているものではありません。 不要なメンバーを削除してサイズを小さくするために、私が再ビルドする必要がありました。
ファイルの作成、書き込み、読み取り、削除を行う方法のサンプルです。
KmdManager を使用して登録/登録解除および開始を行います。 デバッグ出力は DbgView(www.sysinternals.com)または SoftICE で確認してください。
テスト済み: Windows 2000、XP、Server 2003
ドライバをリソースにパックする方法のサンプルです。
テスト済み: Windows 2000、XP、Server 2003
システムがセーフモードで実行されているかどうかを確認する方法です。
KmdManager を使用して登録/登録解除および開始を行います。 デバッグ出力は DbgView(www.sysinternals.com)または SoftICE で確認してください。
テスト済み: Windows 2000、XP、Server 2003
basic/MemoryWorks/LookasideList
ルックアサイドリストと二重リンクリストを使用して、 ルックアサイドリストから割り当てられたメモリブロックを管理する方法のサンプルです。
KmdManager を使用して登録/登録解除および開始/停止を行います。 デバッグ出力は DbgView(www.sysinternals.com)または SoftICE で確認してください。
テスト済み: Windows 2000、XP、Server 2003
SEH を使用して例外を処理する方法のサンプルです。ただし、覚えておいてください。 カーネルモードでは SEH ですべての例外を処理できるわけではありません!
KmdManager を使用して登録/登録解除および開始/停止を行います。 デバッグ出力は DbgView(www.sysinternals.com)または SoftICE で確認してください。
テスト済み: Windows 2000、XP、Server 2003
basic/MemoryWorks/SharedSection
名前付きセクションオブジェクトを使用して、ユーザーモードプロセスと カーネルモードドライバの間でメモリを共有する方法のサンプルです。
テスト済み: Windows 2000、XP、Server 2003
basic/MemoryWorks/SharingMemory
ユーザーモードとカーネルモードの間でメモリバッファを共有する 1 つの可能な方法のサンプルです。
テスト済み: Windows 2000、XP、Server 2003
basic/MemoryWorks/SystemModules
カーネルモードでメモリを割り当てる方法のサンプルです。 無駄に割り当てないように、いくつかのシステム情報を入力します。
KmdManager を使用して登録/登録解除および開始/停止を行います。 デバッグ出力は DbgView(www.sysinternals.com)または SoftICE で確認してください。
テスト済み: Windows 2000、XP、Server 2003
レジストリキーの作成、設定、読み取り、削除を行う方法のサンプルです。 KmdManager を使用して登録/登録解除および開始を行います。 デバッグ出力は DbgView(www.sysinternals.com)または SoftICE で確認してください。
テスト済み: Windows 2000、XP、Server 2003
コードを異なる PE セクションに配置する方法のサンプルです。
basic/Synchronization/MutualExclusion
リソースへの相互排他アクセスを実装する方法のサンプルです。
KmdManager を使用して登録/登録解除および開始/停止を行います。 デバッグ出力は DbgView(www.sysinternals.com)または SoftICE で確認してください。
[basic/Synchronization/SharedEvent - ProcessMon](KmdKit18/examples/basic/Synchronization/SharedEvent - ProcessMon)
何らかのイベントが発生したことをユーザーモードに通知する方法のサンプルです。
テスト済み: Windows 2000、XP、Server 2003
basic/Synchronization/TimerWorks
タイマーの作成、設定、待機、キャンセルを行う方法のサンプルです。 KmdManager を使用して登録/登録解除および開始/停止を行います。 デバッグ出力は DbgView(www.sysinternals.com)または SoftICE で確認してください。
テスト済み: Windows 2000、XP、Server 2003
WorkItem のサンプルです。