
masm32 kernel programming, drivers, tutorials, examples, and tools (credits Four-F)
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 のサンプルです。
このサンプルでは、既存のディスクデバイスを扱います。
テスト済み: Windows 2000、XP & Server 2003
各ディスクパーティションの機能に関する情報を提供します。
テスト済み: Windows 2000、XP & Server 2003
このサンプルでは、既存のディスクデバイスを扱います。
テスト済み: Windows 2000、XP & Server 2003
このサンプルでは、既存のキーボードデバイスを扱います。
テスト済み: Windows 2000、XP & Server 2003
このサンプルでは、既存のキーボードデバイスを扱います。 このサンプルは、標準のコントロールパネル -> キーボードアプレットの機能の一部を提供します。
テスト済み: Windows 2000、XP & Server 2003
どのデバイスから読み取るべきかを知っていれば、 ユーザーモードから MBR を読み取るのは最も簡単な作業です。
テスト済み: Windows 2000、XP & Server 2003
このサンプルでは、既存のシリアルデバイスを扱います。
テスト済み: Windows 2000、XP & Server 2003
セットアップデバイス関数の一部を使用する方法のサンプルです。 利用可能なすべてのディスクデバイスを列挙し、デバイスのプロパティを取得します。 コマンドラインから実行してください。
テスト済み: Windows 2000、XP & Server 2003
システムスピーカーでビープ音を鳴らす方法です。
テスト済み: Windows NT4.0+sp6、2000、XP & Server 2003
ユーザーモードプロセスに直接ポート I/O アクセスを提供します。 Dale Roberts の記事と C ソースコードに基づいています。
テスト済み: Windows 2000、XP & Server 2003
ntoskrnl.exe のベースを見つける方法のサンプルです。
KmdManager を使用して登録/登録解除および開始/停止を行います。 デバッグ出力は DbgView(www.sysinternals.com)または SoftICE で確認してください。
テスト済み: Windows 2000、XP & Server 2003
ReadFile を使用したドライバ通信のデモです。 どちらのメソッドも使用しません。また、ring0 で SEH を使用する方法も示します。
テスト済み: Windows 2000、XP & Server 2003
完全に何もしない、可能な限りシンプルなカーネルモードドライバです。
テスト済み: Windows 2000、XP & Server 2003
Windows NT カーネルモードデバイスドライバのスケルトンコードです。
テスト済み: Windows 2000、XP & Server 2003
DeviceIoControl を使用したドライバ通信のデモです。 バッファリングメソッドを使用します。また、仮想アドレスを変換する方法も示します。
テスト済み: Windows 2000、XP & Server 2003
このサンプルでは、メインのドライバルーチンが実行されている IRQL とプロセス/スレッドコンテキストを確認できます。 出力を確認するには DebugView(www.sysinternals.com)を使用してください。
テスト済み: Windows 2000、XP & Server 2003
Windows Driver Kit (WDK) Version 7.1.0 ドキュメント: https://www.microsoft.com/en-us/download/details.aspx?id=11800
WDK ドキュメント: https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk
Intel 64 and IA-32 Architectures Software Developer's Manual Combined Volumes: 1, 2A, 2B, 2C, 2D, 3A, 3B, 3C, 3D, and 4
Windows 2003 ソースコードリーク、WRK、CRK ...
Undocumented Windows NT book by Prasad Dabak, Sandeep Phadke & Milind Borate
Windows Kernel Programming book by Pavel Yosifovich
Windows Internals books by Mark Russinovich, David A. Solomon & others
(書籍) The Rootkit Arsenal 2nd by Bill Blunden
(書籍) What Makes It Page?: The Windows 7 (x64) Virtual Memory Manager by Enrico Martignetti
(書籍) Subverting the Windows Kernel
(書籍) Rootkits and Bootkits: Reversing Modern Malware and Next Generation Threats
osdev(OS 開発に興味のある人々のコミュニティ)
random github/gist、OSR、phrack、uninformed、openrce、kernelmode、rootkit.com、arteam...