Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
masm32-kernel-programming — masm32 kernel programming, drivers, tutorials, examples, and tools (credits Four-F) | Kitploit
工具/GitHubGitHub/therealdreg/masm32-kernel-programming
Reverse EngineeringMalware AnalysisBinary AnalysisLearning & EducationCurated ResourcesLabs & Practice
GitHubtherealdreg/masm32-kernel-programming

masm32-kernel-programming

masm32 kernel programming, drivers, tutorials, examples, and tools (credits Four-F)

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库网站
130183年前Kitploit 审核通过

masm32-kernel-programming

Dreg 为自己需求而建的仓库

masm32 内核编程、驱动程序、教程、示例和工具(致谢 Four-F)

说明

  • 下载/克隆此仓库
  • 运行 masm32v11r_install.exe
  • 点击安装图像(地球)
  • 将 masm32 安装到 C:\
  • 我建议将以下条目添加到 PATH 环境变量中:
    • C:\masm32\bin
    • C:\masm32
  • 将 KmdKit18\include\ 的内容复制到 C:\masm32\include\
  • 将 KmdKit18\macros\ 的内容复制到 C:\masm32\macros\
  • 将 KmdKit18\lib\ 的内容复制到 C:\masm32\lib\

基本示例

  • 将 beeper.asm 复制到 C:\
  • 将 beeper.bat 复制到 C:\
  • 运行 beeper.bat

此时会在 C:\ 中生成一个 .sys 文件

如何加载/卸载驱动

w2k_load.exe - 最佳方式

加载驱动:

  • w2k_load.exe C:\beeper.sys

w2k_load.exe 或 osrloader.exe 在加载 beeper.sys 时会报错,忽略即可。

这个错误是由驱动程序代码在自身执行完毕时生成的(利用这个技巧,你无需卸载它)

root@kitploit:~
mov eax, STATUS_DEVICE_CONFIGURATION_ERROR
ret

因此,如果 beep.sys 已正确加载到内核中,你应该会听到扬声器发出哔声(驱动程序代码会生成一声哔声)

当你需要卸载驱动时,使用:

  • w2k_load.exe PATH_SYS_FILE /unload

我修改了 Sven B. Schreiber 编写的 w2k_load.exe,使其可用于 Windows 2000 到 Windows 10(清单...)

osrloader

解压 osrloaderv30.zip 并使用这个 GUI 程序:

  • 选择一个 .sys 文件(驱动路径)
  • 注册服务
  • 启动服务

如何在没有 windbg 的情况下查看调试消息

对于旧版 Windows,直接使用本仓库附带的 DbgView.exe。顺便说一下,我修改了它(清单...)

对于现代 Windows,请使用 sysinternals 网站上的最新 dbgview.exe,并查看以下内容进行故障排除:

  • https://stackoverflow.com/questions/12494300/no-output-from-debugview
  • http://msdn.microsoft.com/en-us/library/windows/hardware/ff551519(v=vs.85).aspx
  • https://learn.microsoft.com/en-us/sysinternals/downloads/debugview

后续步骤

阅读本仓库中的 .pdf 文件,并查看 KmdKit18/examples 目录中的示例

警告:所有 ASM 源代码都位于 .bat 文件内(批处理和 asm 代码混合在同一个文件中)

例如 advanced\FindShadowTable\FindShadowTable.bat

root@kitploit:~
;@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 的批处理代码,同时也包含驱动程序自身的源代码。是的,非常巧妙,构建脚本和源代码放在一起。

advanced/FindShadowTable

advanced/FindShadowTable

这是一个如何查找 ServiceDescriptorTableShadow 的示例。

它只是扫描 ID 为 80h-400h 的线程,试图找到一个 KTHREAD.ServiceTable 不等于 KeServiceDescriptorTable 的线程。如果找到这样的线程,其 KTHREAD.ServiceTable 就保存着 ServiceDescriptorTableShadow 的地址。

使用 DbgView (www.sysinternals.com) 查看驱动的调试输出,或使用 SoftICE。

测试环境:Windows 2000、XP 和 Server 2003。

advanced/KbdSpy

advanced/KbdSpy

这是一个简单的传统(非 PnP)PS/2 键盘过滤驱动示例。 警告:你将无法将其附加到 USB 键盘堆栈上。

测试环境:Windows 2000、XP 和 Server 2003。

advanced/MouSpy

advanced/MouSpy

Four-F, [email protected]。这些宏文件来自我的 cocomac 包。

这是一个简单的传统(非 PnP)PS/2 鼠标过滤驱动示例。 警告:你将无法将其附加到 USB 鼠标堆栈上。

测试环境:Windows 2000、XP 和 Server 2003。

advanced/SecureDevices

advanced/SecureDevices

这是一个如何通过调用 IoCreateDeviceSecure 而不是 IoCreateDevice 来将特定安全设置应用于命名设备对象的示例。

由于 IoCreateDeviceSecure 例程不是操作系统的一部分,我们链接包含所有必要例程的 wdmsec.lib。

你在这里找到的 wdmsec.lib 库并不是 DDK 附带的那个。我必须重新构建它以减小体积,并移除不需要的成员。

basic/FileWorks

basic/FileWorks

这是一个如何创建、写入、读取和删除文件的示例。

使用 KmdManager 进行注册/注销并启动它。 使用 DbgView (www.sysinternals.com) 查看其调试输出,或使用 SoftICE。

测试环境:Windows 2000、XP 和 Server 2003。

basic/HiddenDriver

basic/HiddenDriver

这是一个如何将驱动打包到资源中的示例。

测试环境:Windows 2000、XP 和 Server 2003。

basic/IsSafeBootMode

basic/IsSafeBootMode

这是你判断系统是否以安全模式运行的方法。

使用 KmdManager 进行注册/注销并启动它。 使用 DbgView (www.sysinternals.com) 查看其调试输出,或使用 SoftICE。

测试环境:Windows 2000、XP 和 Server 2003。

basic/MemoryWorks/LookasideList

basic/MemoryWorks/LookasideList

这是一个如何使用 Lookaside 列表和双向链表来管理从 Lookaside 列表分配的内存块的示例。

使用 KmdManager 进行注册/注销并启动/停止它。 使用 DbgView (www.sysinternals.com) 查看其调试输出,或使用 SoftICE。

测试环境:Windows 2000、XP 和 Server 2003。

basic/MemoryWorks/seh

basic/MemoryWorks/seh

这是一个如何使用 SEH 处理异常的示例。但请记住。 你不能在内核模式下用 SEH 处理所有异常!

使用 KmdManager 进行注册/注销并启动/停止它。 使用 DbgView (www.sysinternals.com) 查看其调试输出,或使用 SoftICE。

测试环境:Windows 2000、XP 和 Server 2003。

basic/MemoryWorks/SharedSection

basic/MemoryWorks/SharedSection

这是一个如何使用命名节对象在用户模式进程与内核模式驱动之间共享内存的示例。

测试环境:Windows 2000、XP 和 Server 2003。

basic/MemoryWorks/SharingMemory

basic/MemoryWorks/SharingMemory

这是一个如何在用户模式和内核模式之间共享内存缓冲区的可能方法的示例。

测试环境:Windows 2000、XP 和 Server 2003。

basic/MemoryWorks/SystemModules

basic/MemoryWorks/SystemModules

这是一个如何在内核模式下分配内存的示例。为了不白白分配,我们用一些系统信息填充它。

使用 KmdManager 进行注册/注销并启动/停止它。 使用 DbgView (www.sysinternals.com) 查看其调试输出,或使用 SoftICE。

测试环境:Windows 2000、XP 和 Server 2003。

basic/RegistryWorks

basic/RegistryWorks

这是一个如何创建、设置、读取和删除注册表项的示例。 使用 KmdManager 进行注册/注销并启动它。 使用 DbgView (www.sysinternals.com) 查看其调试输出,或使用 SoftICE。

测试环境:Windows 2000、XP 和 Server 2003。

basic/Sections

basic/Sections

这是一个如何将代码放入不同 PE 节中的示例。

basic/Synchronization/MutualExclusion

basic/Synchronization/MutualExclusion

这是一个如何实现对资源互斥访问的示例。

使用 KmdManager 进行注册/注销并启动/停止它。 使用 DbgView (www.sysinternals.com) 查看其调试输出,或使用 SoftICE。

basic/Synchronization/SharedEvent - ProcessMon

[basic/Synchronization/SharedEvent - ProcessMon](KmdKit18/examples/basic/Synchronization/SharedEvent - ProcessMon)

这是一个如何通知用户模式某种事件已发生的示例。

测试环境:Windows 2000、XP 和 Server 2003。

basic/Synchronization/TimerWorks

basic/Synchronization/TimerWorks

这是一个如何创建、设置、等待和取消定时器的示例。 使用 KmdManager 进行注册/注销并启动/停止它。 使用 DbgView (www.sysinternals.com) 查看其调试输出,或使用 SoftICE。

测试环境:Windows 2000、XP 和 Server 2003。

basic/WorkItem

basic/WorkItem

WorkItem 示例

nodriver/DiskGeometry

nodriver/DiskGeometry

在此示例中,我们处理现有的磁盘设备。

测试环境:Windows 2000、XP 和 Server 2003

nodriver/DriveLayout

nodriver/DriveLayout

提供有关每个磁盘分区特征的信息。

测试环境:Windows 2000、XP 和 Server 2003

nodriver/FloppyGeometry

nodriver/FloppyGeometry

在此示例中,我们处理现有的磁盘设备。

测试环境:Windows 2000、XP 和 Server 2003

nodriver/KbdGarland

nodriver/KbdGarland

在此示例中,我们处理现有的键盘设备。

测试环境:Windows 2000、XP 和 Server 2003

nodriver/KbdTypematic

nodriver/KbdTypematic

在此示例中,我们处理现有的键盘设备。 此示例提供标准“控制面板 -> 键盘”小程序的部分功能。

测试环境:Windows 2000、XP 和 Server 2003

nodriver/MbrDump

nodriver/MbrDump

从用户模式读取 MBR 是最容易的事情,只要你知道从哪个设备读取。

测试环境:Windows 2000、XP 和 Server 2003

nodriver/SerialBaudRate

nodriver/SerialBaudRate

在此示例中,我们处理现有的串行设备。

测试环境:Windows 2000、XP 和 Server 2003

setup/EnumDisk

setup/EnumDisk

这是一个如何使用部分安装设备函数的示例。 枚举所有可用的磁盘设备并获取设备属性。 从命令行运行它。

测试环境:Windows 2000、XP 和 Server 2003

simple/Beeper

simple/Beeper

如何使用系统扬声器发出哔声。

测试环境:Windows NT4.0+sp6、2000、XP 和 Server 2003

simple/DateTime

simple/DateTime

向用户模式进程提供直接端口 I/O 访问。 基于 Dale Roberts 的文章和 C 源代码。

测试环境:Windows 2000、XP 和 Server 2003

simple/GetKernelBase

simple/GetKernelBase

这是一个如何查找 ntoskrnl.exe 基址的示例。

使用 KmdManager 进行注册/注销并启动/停止它。 使用 DbgView (www.sysinternals.com) 查看其调试输出,或使用 SoftICE。

测试环境:Windows 2000、XP 和 Server 2003

simple/NtBuild

simple/NtBuild

演示了驱动程序通过 ReadFile 进行通信,使用 neither 方法。以及如何在 ring0 中使用 SEH。

测试环境:Windows 2000、XP 和 Server 2003

simple/Simplest

simple/Simplest

尽可能简单的内核模式驱动,它绝对什么都不做。

测试环境:Windows 2000、XP 和 Server 2003

simple/Skeleton

simple/Skeleton

Windows NT 内核模式设备驱动的骨架代码。

测试环境:Windows 2000、XP 和 Server 2003

simple/VirtToPhys

simple/VirtToPhys

演示了驱动程序通过 DeviceIoControl 进行通信,使用缓冲方法。以及如何转换虚拟地址。

测试环境:Windows 2000、XP 和 Server 2003

simple/WhichIrqlAndContext

simple/WhichIrqlAndContext

此示例让你了解主驱动程序例程运行时的 IRQL 和进程/线程上下文。 使用 DebugView (www.sysinternals.com) 查看其输出。

测试环境:Windows 2000、XP 和 Server 2003

相关链接

  • https://masm32.com/board/index.php?topic=4452.0
  • http://www.masm32.com/website/kmdtute/index.html
  • https://www.asmcommunity.net/forums/topic/10872/2.html
  • http://four-f.narod.ru/
  • https://empyreal96.github.io/nt-info-depot/WinDDK.html

更多学习资料

  • https://github.com/therealdreg/x86osdev

  • Windows 驱动程序工具包 (WDK) 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 和 IA-32 架构软件开发人员手册合订本:1、2A、2B、2C、2D、3A、3B、3C、3D 和 4

  • Windows 2003 源代码泄漏,WRK,CRK ...

  • 《Undocumented Windows NT》一书,作者:Prasad Dabak、Sandeep Phadke 和 Milind Borate

  • 《Windows Kernel Programming》一书,作者:Pavel Yosifovich

  • 《Windows Internals》系列书籍,作者:Mark Russinovich、David A. Solomon 等人

  • (书) 《The Rootkit Arsenal(第 2 版)》作者:Bill Blunden

  • (书) 《What Makes It Page?: The Windows 7 (x64) Virtual Memory Manager》作者:Enrico Martignetti

  • (书) 《Subverting the Windows Kernel》

  • (书) 《Rootkits and Bootkits: Reversing Modern Malware and Next Generation Threats》

  • osdev(对操作系统开发感兴趣的人的社区)

  • 各种 github/gist、OSR、phrack、uninformed、openrce、kernelmode、rootkit.com、arteam...

值得关注的人

  • https://github.com/hfiref0x
  • https://github.com/rwfpl
  • https://github.com/deroko
  • https://github.com/Fyyre
  • https://github.com/Cr4sh
  • https://twitter.com/zwclose
  • https://twitter.com/yarden_shafir
  • https://twitter.com/markrussinovich
  • https://twitter.com/aionescu
  • https://twitter.com/zodiacon
  • https://github.com/TheEnergyStory
  • https://twitter.com/msuiche
  • https://twitter.com/therealdreg
  • https://twitter.com/0vercl0k
  • https://twitter.com/Ivanlef0u
  • https://twitter.com/mrexodia
  • https://twitter.com/reversemode
  • https://twitter.com/standa_t
  • https://twitter.com/richinseattle
  • https://twitter.com/gynvael
  • https://twitter.com/j00ru
  • https://twitter.com/Xylit0l
下载工具