|
win7 下 WriteFile 直接写扇区问题
好像是要上驱动搞? |
|
[讨论]谈一谈,做一个杀毒软件,必备的Windows驱动程序
)监控管理Windows文件系统。 监控Windows系统上,文件的打开、创建、删除、复制、粘贴、剪切、读、写 等状态。 为了达到通用性,不论是在 32位Windows系统上,还是64位Windows系统上,都要使用MiniFilter文件系统过滤驱动的开发技术,来监管文件的这些状态。不应该使用Hook SSDT的钩子技术来监控管理文件系统。 我想说的是网上的代码,功能是有,但是用不久就会卡死 功能就算可以实现,但是距离商业程序还差很远,稳定性和兼容性才是大问题 |
|
[讨论]感觉国内很多浏览器大肆收集用户浏览技术,侵犯了用户隐私,好伤感
IE中文版本,是否有问题呢? |
|
[求助]微过滤驱动中蓝屏问题
我也坐等这个问题 |
|
基于文件过滤驱动的文件保护问题
突然发现外面放的代码,可以实现的功能有,但是能用的住的,没发现 |
|
基于文件过滤驱动的文件保护问题
多谢LS的2位兄弟提醒! 现在的问题,在服务器上跑几个小时,机器就卡死了. WCHAR pTempBuf[ 512 ] = { 0 }; WCHAR *pNonPageBuf = NULL, *pTemp = pTempBuf; if( nameInfo->Name.MaximumLength > 512 ) { pNonPageBuf = ExAllocatePool( NonPagedPool, nameInfo->Name.MaximumLength ); pTemp = pNonPageBuf; } RtlCopyMemory( pTemp, nameInfo->Name.Buffer, nameInfo->Name.MaximumLength ); DbgPrint("[MiniFilter][IRP_MJ_WRITE]%wZ", &nameInfo->Name); _wcsupr( pTemp ); 这块申请未分页内存的原因? |
|
基于文件过滤驱动的文件保护问题
而且测试在访问频繁的机器上,会把机器卡死 |
|
[分享]关于文件系统过滤驱动sFilter框架的话题。MiniFilter框架已经很成熟了,sFilter框架还能用吗?
看来LZ对这个领域很有研究! http://bbs.pediy.com/showthread.php?t=188837 请LZ帮小弟解决下实际问题,看代码中都有什么BUG |
|
[求助]ShellExecute启动外部程序过主防
LS的是什么方法? |
|
[求助]同时连接多个VPN失败
支持LZ这种解决问题后SHARE的精神 |
|
基于文件过滤驱动的文件保护问题
过了好几天了,不会无解了吧? |
|
HOOK API-DeleteFile中遇到的问题?
你先看看那个安装进程里有没DLL |
|
基于文件过滤驱动的文件保护问题
求大牛指点,到底应该怎么改? |
|
基于文件过滤驱动的文件保护问题
UCHAR MajorFunction = 0; ULONG Options = 0; ULONG i; PFLT_FILE_NAME_INFORMATION nameInfo; MajorFunction = Data->Iopb->MajorFunction; Options = Data->Iopb->Parameters.Create.Options; //如果是IRP_MJ_CREATE,且选项是FILE_DELETE_ON_CLOSE,并且能成功获得文件名信息 // if( IRP_MJ_CREATE == MajorFunction && FILE_DELETE_ON_CLOSE == Options && // NT_SUCCESS( FltGetFileNameInformation( Data, FLT_FILE_NAME_NORMALIZED | FLT_FILE_NAME_QUERY_DEFAULT, &nameInfo ) ) ) if( IRP_MJ_CREATE == MajorFunction && NT_SUCCESS( FltGetFileNameInformation( Data, FLT_FILE_NAME_NORMALIZED | FLT_FILE_NAME_QUERY_DEFAULT, &nameInfo ) ) ) { if ( FILE_OPEN_IF== Options || FILE_CREATE== Options || FILE_DELETE_ON_CLOSE == Options || FILE_SUPERSEDE == Options || //新建/覆盖文件 FILE_OVERWRITE == Options || //覆盖文件 FILE_MAXIMUM_DISPOSITION == Options || //打开并覆盖 FILE_OVERWRITE_IF == Options //不删除老文件,只是清空它的内容 ) { //如果解析文件信息成功 if( NT_SUCCESS( FltParseFileNameInformation( nameInfo ) ) ) { WCHAR pTempBuf[ 512 ] = { 0 }; WCHAR *pNonPageBuf = NULL, *pTemp = pTempBuf; if( nameInfo->Name.MaximumLength > 512 ) { pNonPageBuf = ExAllocatePool( NonPagedPool, nameInfo->Name.MaximumLength ); pTemp = pNonPageBuf; } RtlCopyMemory( pTemp, nameInfo->Name.Buffer, nameInfo->Name.MaximumLength ); DbgPrint("[MiniFilter][IRP_MJ_CREATE]%wZ", &nameInfo->Name); _wcslwr( pTemp ); FLT_PREOP_CALLBACK_STATUS NPPreCreate 那处我这样改的,还是不行 |
|
基于文件过滤驱动的文件保护问题
FLT_POSTOP_CALLBACK_STATUS NPPostCreate ( __inout PFLT_CALLBACK_DATA Data, __in PCFLT_RELATED_OBJECTS FltObjects, __in_opt PVOID CompletionContext, __in FLT_POST_OPERATION_FLAGS Flags ) { return FLT_POSTOP_FINISHED_PROCESSING; } FLT_PREOP_CALLBACK_STATUS NPPreCreate ( __inout PFLT_CALLBACK_DATA Data, __in PCFLT_RELATED_OBJECTS FltObjects, __deref_out_opt PVOID *CompletionContext ) { UNREFERENCED_PARAMETER( FltObjects ); UNREFERENCED_PARAMETER( CompletionContext ); PAGED_CODE(); { UCHAR MajorFunction = 0; ULONG Options = 0; PFLT_FILE_NAME_INFORMATION nameInfo; MajorFunction = Data->Iopb->MajorFunction; Options = Data->Iopb->Parameters.Create.Options; //如果是IRP_MJ_CREATE,且选项是FILE_DELETE_ON_CLOSE,并且能成功获得文件名信息 if( IRP_MJ_CREATE == MajorFunction && FILE_DELETE_ON_CLOSE == Options && NT_SUCCESS( FltGetFileNameInformation( Data, FLT_FILE_NAME_NORMALIZED | FLT_FILE_NAME_QUERY_DEFAULT, &nameInfo ) ) ) { //如果解析文件信息成功 if( NT_SUCCESS( FltParseFileNameInformation( nameInfo ) ) ) { WCHAR pTempBuf[ 512 ] = { 0 }; WCHAR *pNonPageBuf = NULL, *pTemp = pTempBuf; if( nameInfo->Name.MaximumLength > 512 ) { pNonPageBuf = ExAllocatePool( NonPagedPool, nameInfo->Name.MaximumLength ); pTemp = pNonPageBuf; } RtlCopyMemory( pTemp, nameInfo->Name.Buffer, nameInfo->Name.MaximumLength ); DbgPrint("[MiniFilter][IRP_MJ_CREATE]%wZ", &nameInfo->Name); _wcsupr( pTemp ); if( NULL != wcsstr( pTemp, L"README.TXT" ) ) // 检查是不是要保护的文件 { //DbgPrint( "\r\nIn NPPreCreate(), FilePath{%wZ} is forbided.", &nameInfo->Name ); if( NULL != pNonPageBuf ) ExFreePool( pNonPageBuf ); FltReleaseFileNameInformation( nameInfo ); return FLT_PREOP_COMPLETE; } if( NULL != pNonPageBuf ) ExFreePool( pNonPageBuf ); } FltReleaseFileNameInformation( nameInfo ); } } return FLT_PREOP_SUCCESS_NO_CALLBACK; } 拦截create的代码 不知道怎么修改呢? |
|
基于文件过滤驱动的文件保护问题
我目前只能感谢帮我顶的那位兄弟了 |
|
|
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值