建立设备、符号链接及初识SSDT

本文分享了关于创建设备及符号链接的编程经验,详细介绍了使用特定指令进行设备和符号链接创建的过程,并提及了相关手册作为参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这两天了解了下建立设备和符号链接这块的知识 改了下代码 熟悉一下

 

.386
.model flat, stdcall
option casemap:none

include w2k/ntstatus.inc
include w2k/ntddk.inc
include w2k/ntoskrnl.inc 
include w2k/w2kundoc.inc
includelib ntoskrnl.lib

 

.data
szDeviceName  dw '/','d','e','v','i','c','e','/','1',0   ;这块必须是字型数据 但一般定义成字型会出错 所以只能一个字一个字定义
szSymbolicLinkName  dw '/','?','?','/','1',0

.code INIT

DriverEntry proc pDriverObject:PDRIVER_OBJECT,pusRegistryPath:PUNICODE_STRING
local status:NTSTATUS
local pDeviceObject:PVOID

local DeviceName:UNICODE_STRING
local SymbolicLinkName:UNICODE_STRING

int 3

invoke RtlInitUnicodeString,addr DeviceName,addr szDeviceName
invoke RtlInitUnicodeString,addr SymbolicLinkName,addr szSymbolicLinkName

mov status,STATUS_DEVICE_CONFIGURATION_ERROR
invoke IoCreateDevice,pDriverObject,0,addr szDeviceName,FILE_DEVICE_UNKNOWN,0,FALSE,addr pDeviceObject
.if eax == STATUS_SUCCESS
 invoke IoCreateSymbolicLink, addr SymbolicLinkName, addr szDeviceName
 
 .if eax == STATUS_SUCCESS
 mov eax, pDriverObject
 mov eax,KeServiceDescriptorTable
 

 .endif
.endif
ret

DriverEntry endp
 
end DriverEntry

具体内容可以参考罗云彬翻译的一个KMDTUT之类的手册

 

中午看了SSDT这块 当时就没明白KeServiceDescriptorTable这个东西怎么来的,下午琢磨着是不是已经定义过了 所以可以直接拿来用 晚上就试着写了句代码(上面红字处) 果然编译通过 这下就明白了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值