wwwllg
驱动牛犊
驱动牛犊
  • 注册日期2004-07-04
  • 最后登录2016-03-22
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1421回复:3

我的驱动加载成功,为什么还可以删除掉(直接删除.sys)?如何防止用户删除.sys?

楼主#
更多 发布于:2004-09-23 11:30
如题
wwwllg
驱动牛犊
驱动牛犊
  • 注册日期2004-07-04
  • 最后登录2016-03-22
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-09-24 09:27
我已经解决了。
是因为查询类型错了。
wwwllg
驱动牛犊
驱动牛犊
  • 注册日期2004-07-04
  • 最后登录2016-03-22
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
板凳#
发布于: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是已经打开的键是成功的。
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
地板#
发布于:2004-09-23 14:58
你看看3721的驱动是如何保护的。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
游客

返回顶部