HookZwCreateFile

内核驱动编程,想在驱动级上Hook ZwCreateFile(),然后做点其他事情....

在入口DriverEntry先hook了这个函数

HOOK_SYSCALL(ZwCreateFile, MyZwCreateFile, OriZwCreateFile);

HOOK_SYSCALL函数可以获得Zw*函数的地址,然后取得索引,自动的交换SSDT中索引所对应的函数地址和我们hook函数的地址。

然后:

NTSTATUS
MyZwCreateFile( 
       OUT PHANDLE FileHandle,
       IN ACCESS_MASK DesiredAccess, 
       IN POBJECT_ATTRIBUTES ObjectAttributes, 
       OUT PIO_STATUS_BLOCK IoStatusBlock, 
       IN PLARGE_INTEGER AllocationSize OPTIONAL,
       IN ULONG FileAttributes,
       IN ULONG ShareAccess, 
       IN ULONG CreateDisposition, 
       IN ULONG CreateOptions, 
       IN PVOID EaBuffer OPTIONAL, 
       IN ULONG EaLength )
{
	UNICODE_STRING openFileName;
	RtlInitUnicodeString(&openFileName, ObjectAttributes->ObjectName->Buffer);
	// 宽字符比较
	if(wcsstr(ObjectAttributes->ObjectName->Buffer, L"@L")){
	// do something i want
	return STATUS_SEVERITY_ERROR;
	}

}
其实,我想说的是这个
wcsstr(ObjectAttributes->ObjectName->Buffer, L"@L")

wcsstr在一个宽字符串string中搜索另一个宽字符串
ObjectAttributes->ObjectName->Buffer 是操作的文件名
// OBJECT_ATTRIBUTES 
typedef struct _OBJECT_ATTRIBUTES { 
ULONG Length;//长度 18h 
HANDLE RootDirectory;// 00000000 
PUNICODE_STRING ObjectName;//指向对象名的指针 
ULONG Attributes;//对象属性00000040h 
PVOID SecurityDescriptor;  // Points to type SECURITY_DESCRIPTOR,0 
PVOID SecurityQualityOfService; // Points to type SECURITY_QUALITY_OF_SERVICE,0 
} OBJECT_ATTRIBUTES; 


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值