设为首页
收藏本站
联系我们
网站导航
在攻与防的对立统一中寻求突破!
首页
订阅杂志
技术文章
VIP专区
培训专区
网站商城
技术问答
技术论坛
黑客论坛
-
公共交流区
-
杂志相关
- 浏览 - 《如何InlineHook IoCallDriver来保护文件》一文的补遗
论坛新帖速览
网络安全技术热点关注
2010年VIP会员加入优惠方案
致看不懂黑防杂志朋友的一封信
您是本贴第
330
位浏览者
帖子主题: 《如何InlineHook IoCallDriver来保护文件》一文的补遗
liuke_beeth
等级: 黑客防线技术团队
发贴: 16 贴
货币:
0
金币
积分: 506 分
经验: 120 点
体力: 2150 点
注册: 2008-07-24
#1
《如何InlineHook IoCallDriver来保护文件》一文的补遗
由于没有防止修改文件内容来删除文件,所以重新修改代码使其能防止修改文件内容来删除文件,由于代码上传不上去,所以把代码贴出来,希望大家对本人的文章提出更多的建议,谢谢大家!
修改源代码的部分如下,大家用它替换原文件的IsNeedProtect函数即可,重新编译就可以哪:
int IsNeedProtect(DEVICE_OBJECT *DeviceObject, PIRP Irp)
{
NTSTATUS status;
int nResult=FALSE;
DRIVER_OBJECT *DriverObject=DeviceObject->DriverObject;
WCHAR *pwsz=NULL;
IO_STACK_LOCATION *sp;
FILE_OBJECT *FileObject=NULL;
status=STATUS_INVALID_PARAMETER;
sp=IoGetNextIrpStackLocation(Irp);;
switch(sp->MajorFunction)
{
case IRP_MJ_SET_INFORMATION:
goto Continue11;
case IRP_MJ_WRITE:
goto Continue11;
default:
goto Exit00;
}
Continue11:
FileObject=sp->FileObject;
_try
{
pwsz=wcsrchr(DriverObject->DriverName.Buffer,L'\\');
pwsz++;
//判断Irp是不是发往ntfs和fastfat驱动的,不是则跳出
if (_wcsnicmp(pwsz,L"ntfs",4)&&_wcsnicmp(pwsz,L"fastfat",7))
{
goto Exit00;
}
DbgPrint("IofCallDriver:Delete File:%ws\n",FileObject->FileName.Buffer);
pwsz=wcsrchr(FileObject->FileName.Buffer,L'\\');
if (pwsz!=NULL)
{
pwsz++;
}
if (!_wcsnicmp(pwsz,L"1234.txt",16))
{
Irp->IoStatus.Information=0;
Irp->IoStatus.Status=STATUS_ACCESS_DENIED;
IoCompleteRequest(Irp,IO_NO_INCREMENT);
nResult=TRUE;
goto Exit00;
}
}
except(1)
{
goto Exit00;
}
Exit00:
return nResult;
}
本贴已被
作者
于
2010-2-2 11:56:13
编辑过
2010-2-2 11:52:13
键盘上的眼泪
等级: 普通用户
发贴: 3 贴
货币:
0
金币
积分: 120 分
经验: 28 点
体力: 235 点
注册: 2008-01-10
#2
Re:《如何InlineHook IoCallDriver来保护文件》一文的补遗
thank,楼主的代码正是我需要的。
2010-2-2 12:33:10
无微不至
等级: 普通用户
发贴: 7 贴
货币:
0
金币
积分: 40 分
经验: 40 点
体力: 130 点
注册: 2010-02-28
#3
Re:《如何InlineHook IoCallDriver来保护文件》一文的补遗
不错啊~呵呵~
2010-2-28 11:58:45
彻底修复
修复
奖惩
转移
固顶
区固顶
总固顶
精华
锁定
删除
3
1/1
1
站点地图/全站索引
关于我们
人才招聘
联系我们
友情链接
版权所有
黑客防线
廊(公)备13100138000530号