ATAPI(磁盘端口驱动)级文件保护简单实现
来源:互联网 发布:淘宝公益宝贝有什么好处 编辑:程序博客网 时间:2024/06/03 06:32
define IoGetIrpStackLocation( Irp , Level) (/
(Irp)->Tail.Overlay.CurrentStackLocation + Level )
BOOL IfIrpHasFobj(PIRP pIrp , LPCWSTR FileName)
{
ULONG i , j ;
PIO_STACK_LOCATION irpStack ;
PVOID NamePool ;
for ( i = 0 ; i < (ULONG)(pIrp->StackCount - pIrp->CurrentLocation + 1) ; i ++)
{
irpStack = IoGetIrpStackLocation(pIrp , i );
if (irpStack->FileObject)
{
if (irpStack->FileObject->FileName.Buffer)
{
NamePool = ExAllocatePool(NonPagedPool , irpStack->FileObject->FileName.Length + 2);
if (NamePool)
{
KDMSG(("%ws" , irpStack->FileObject->FileName.Buffer));
RtlCopyMemory(NamePool ,
irpStack->FileObject->FileName.Buffer ,
irpStack->FileObject->FileName.Length + 2);
_wcsupr((wchar_t*)NamePool);
if (wcsstr((wchar_t*)NamePool , FileName))
{
ExFreePool(NamePool);
return TRUE ;
}
ExFreePool(NamePool);
}
}
}
}
return FALSE ;
}
NTSTATUS ProxyAtapiScsi(PDEVICE_OBJECT devobj , PIRP pIrp)
{
NTSTATUS stat ;
if (IfIrpHasFobj(pIrp , L"123.TXT"))
{
pIrp->IoStatus.Status = 0xc0000001;
pIrp->IoStatus.Information = 0 ;
IoCompleteRequest(pIrp , IO_NO_INCREMENT);
return 0xc0000001;
}
__asm
{
push pIrp
push devobj
call OldAtapiScsiDispatch
mov stat ,eax
}
return stat ;
}
(Irp)->Tail.Overlay.CurrentStackLocation + Level )
BOOL IfIrpHasFobj(PIRP pIrp , LPCWSTR FileName)
{
ULONG i , j ;
PIO_STACK_LOCATION irpStack ;
PVOID NamePool ;
for ( i = 0 ; i < (ULONG)(pIrp->StackCount - pIrp->CurrentLocation + 1) ; i ++)
{
irpStack = IoGetIrpStackLocation(pIrp , i );
if (irpStack->FileObject)
{
if (irpStack->FileObject->FileName.Buffer)
{
NamePool = ExAllocatePool(NonPagedPool , irpStack->FileObject->FileName.Length + 2);
if (NamePool)
{
KDMSG(("%ws" , irpStack->FileObject->FileName.Buffer));
RtlCopyMemory(NamePool ,
irpStack->FileObject->FileName.Buffer ,
irpStack->FileObject->FileName.Length + 2);
_wcsupr((wchar_t*)NamePool);
if (wcsstr((wchar_t*)NamePool , FileName))
{
ExFreePool(NamePool);
return TRUE ;
}
ExFreePool(NamePool);
}
}
}
}
return FALSE ;
}
NTSTATUS ProxyAtapiScsi(PDEVICE_OBJECT devobj , PIRP pIrp)
{
NTSTATUS stat ;
if (IfIrpHasFobj(pIrp , L"123.TXT"))
{
pIrp->IoStatus.Status = 0xc0000001;
pIrp->IoStatus.Information = 0 ;
IoCompleteRequest(pIrp , IO_NO_INCREMENT);
return 0xc0000001;
}
__asm
{
push pIrp
push devobj
call OldAtapiScsiDispatch
mov stat ,eax
}
return stat ;
}
- ATAPI(磁盘端口驱动)级文件保护简单实现
- ATAPI(磁盘端口驱动)级文件保护简单实现
- 学NTFS格式磁盘解析及atapi磁盘读写
- Win64 驱动内核编程-17. MINIFILTER(文件保护)
- 实现磁盘搜索文件
- 驱动层双机调试,文件保护,进程保护
- [原创]也学NTFS格式磁盘解析及atapi磁盘读写
- 【转】 xx_学驱动 -- INLINE HOOK 过简单驱动保护、、
- 驱动笔记:SSDT HOOK实现进程保护
- 在驱动中写磁盘文件
- SSDT HOOK实现文件保护
- 安装程序无法复制文件 Atapi.sys的解决方法
- java实现磁盘文件检索!
- subst实现文件映射磁盘
- 磁盘保护原理简介
- 磁盘加密保护
- 磁盘驱动
- 使用I/O完成端口模型监测磁盘文件状态
- CSS语法手册(二)文本属性
- 攻击木马--远程控制软件自身的漏洞
- SqlServer2000中用户自定义数据类型的使用
- 终于可以不用任何控件作出XP风格的程序了
- .Net数据库相关操作
- ATAPI(磁盘端口驱动)级文件保护简单实现
- CSS语法手册(三)文本填充,边框,边界和位置属性(一)
- 使用perl通过adsi接口导出AD帐户列
- 教你如何在Linux/Unix平台安装MySQL
- 判断Windows系统补丁
- Delphi 6 XML映象工具
- C++中有了malloc/free,为什么还要用new/delete
- CSS语法手册(四)文本填充,边框,边界和位置属性(二)
- SAP 中如何取得当月的第一天和最后一天的日期值?