SSDT HOOK NtCreateFile 出现代码判断无效
第一次代码
NTSTATUS MYNtCreateFile(
OUT PHANDLE FileHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes,
OUT PIO_STATUS_BLOCK IoStatusBlock,
IN PLARGE_INTEGER AllocationSize OPTIONAL,
IN ULONG FileAttributes,
IN ULONG ShareAccess,
IN ULONG CreateDisposition,
IN ULONG CreateOptions,
IN PVOID EaBuffer OPTIONAL,
IN ULONG EaLength )
{
ULONG rreett;
ULONG ccsd;
__asm{
push EaLength
push EaBuffer OPTIONAL
push CreateOptions
push CreateDisposition
push ShareAccess
push FileAttributes
push AllocationSize OPTIONAL
push IoStatusBlock
push ObjectAttributes
push DesiredAccess
push FileHandle
call NtCreateFileAddress
mov rreett,eax
}
if (FileHandle != NULL)
{
ccsd=*(ULONG*)FileHandle;
if (ccsd != 0)
{
if (FileAttributes !=0)
{ if (check((HANDLE)ccsd) != 0)
{
DbgPrint("FileAttributes : %08X \n",FileAttributes);
DbgPrint("LTAAAAAAA : %s \n",SafePatch);
}
}
}
}
return rreett;
}
运行一下任务管理器 多次出现 FileAttributes : 00000000 代码中 的 FileAttributes !=0 竟然无效 刷新一个文件夹表现尤其明显
代码作出如下修改
while (ISRun) //防止多线程同步执行
{
DbgPrint("卡住啦~!!!!!!!........ \n");
goto END;
}
ISRun=TRUE;
__asm{
push EaLength
push EaBuffer OPTIONAL
push CreateOptions
push CreateDisposition
push ShareAccess
push FileAttributes
push AllocationSize OPTIONAL
push IoStatusBlock
push ObjectAttributes
push DesiredAccess
push FileHandle
call NtCreateFileAddress
mov rreett,eax
}
if (FileHandle != NULL)
{
ccsd=*(ULONG*)FileHandle;
if (ccsd != 0)
{
if (FileAttributes !=0)
{ if (check((HANDLE)ccsd) != 0)
{
DbgPrint("FileAttributes : %08X \n",FileAttributes);
DbgPrint("LTAAAAAAA : %s \n",SafePatch);
}
}
}
}
ISRun=FALSE;
END:
return rreett;
}
还是会出现 判断无效 也会出现 卡住啦~!!!!!!!........ 表现在 打开一些复合文件 刷新文件夹 什么的 运行任务管理器
诚心求教 大牛 这个情况 怎么处理 ? 按理说 不管怎么请求 控制变量 只有执行完才会复位啊 我想过滤 出文件的 创建请求 求大牛指点 不胜感激
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课