[旧帖]
[求助]为什么我挂钩了NtLoadDriver之后,我想禁止的驱动还是可以正常加载呢?麻烦帮帮我啊.
0.00雪花
发表于:
2012-7-11 18:34
2469
[旧帖] [求助]为什么我挂钩了NtLoadDriver之后,我想禁止的驱动还是可以正常加载呢?麻烦帮帮我啊.
0.00雪花
我想禁止一个驱动程序的加载,可是,我挂钩了NtLoadDriver之后,明明返回失败了,可是,实际上那个驱动还是加载运行了.
NTSTATUS DetourZwLoadDriver
(
PUNICODE_STRING DriverPath
)
{
ANSI_STRING AnsiDriverPath;
ANSI_STRING CmpFile;
NTSTATUS status;
RtlInitAnsiString(&CmpFile,"IsDrv");
status=OriginalZwLoadDriver(DriverPath);
//成功则打印出所加载的驱动、内核模块,不然,则直接返回
if (NT_SUCCESS(status))
{
RtlUnicodeStringToAnsiString(&AnsiDriverPath,DriverPath,TRUE);
DbgPrint("The System has loaded a new Driver or system mudule:\n%s\n",AnsiDriverPath.Buffer);
//当发现制定驱动加载的时候
if (strstr(AnsiDriverPath.Buffer,CmpFile.Buffer))
{
DbgPrint("IceSword正在尝试加载驱动,已经禁止.\n");
return STATUS_UNSUCCESSFUL;
}
else{
DbgPrint("合法驱动,自动放行...\n");
return OriginalZwLoadDriver(DriverPath);
}
}
return OriginalZwLoadDriver(DriverPath);
}
恕我无能,实验了半天也无功而返.
我的目的是想自己开发一个驱动防火墙而已,这个问题困扰我很久了,尝试了很多方法也不行,哎,麻烦各位提点一下,万分感激!
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!