阅读:1419回复:3
我的驱动加载成功,为什么还可以删除掉(直接删除.sys)?如何防止用户删除.sys?
如题
|
|
沙发#
发布于:2004-09-23 14:58
你看看3721的驱动是如何保护的。
|
|
|
板凳#
发布于:2004-09-24 08:39
我当然不知道撒。
他又没有源码。 我现在想在内核下打开这个文件。想到,得到注册表下的 imagepath.然后zwopenfile 可是如下代码却发生错误。 UNICODE_STRING ImagePath; RtlInitUnicodeString(&ImagePath,L"ImagePath"); PKEY_VALUE_FULL_INFORMATION infoValueBuffer; if(NT_SUCCESS(Status)) { DWORD starttype = 1; Status = ZwSetValueKey(hHandle,&title,0,REG_DWORD,&starttype,sizeof(DWORD)); if(NT_SUCCESS(Status)) { DbgPrint("Write reg ok \n"); } ////////////////////////////////////////////////////// ULONG lKeyImage = 0; Status = ZwQueryValueKey( hHandle, &ImagePath, KeyValueFullInformation, (PVOID) NULL, 0, &lKeyImage ); if (Status != STATUS_BUFFER_OVERFLOW && Status != STATUS_BUFFER_TOO_SMALL) { DbgPrint("query len erro \n"); ZwClose(hHandle); return; } // // Allocate a buffer large enough to contain the entire key data value. // infoValueBuffer = (struct _KEY_VALUE_FULL_INFORMATION *)ExAllocatePool( NonPagedPool, lKeyImage ); if (infoValueBuffer) { Status = ZwQueryValueKey( hHandle, &ImagePath, KeyValueFullInformation, infoValueBuffer, lKeyImage, &lKeyImage ); if (NT_SUCCESS( Status )) { UNICODE_STRING ImageFullPath; RtlInitUnicodeString(&ImageFullPath,infoValueBuffer->Name[1]); OpenFile(ImageFullPath); } ExFreePool( infoValueBuffer ); } hHandle是已经打开的键是成功的。 |
|
地板#
发布于:2004-09-24 09:27
我已经解决了。
是因为查询类型错了。 |
|