首页
社区
课程
招聘
[旧帖] inline hook NtCreateFile 运行10小时左右电脑死机 0.00雪花
发表于: 2015-4-24 15:13 3879

[旧帖] inline hook NtCreateFile 运行10小时左右电脑死机 0.00雪花

2015-4-24 15:13
3879
inline hook NtCreateFile 前五个字节 测试没问题 可以正常保护文件
但是hook之后10个小时左右的时候 电脑会死机。。。测试了好几天了 每次都是这样 兄弟们帮忙看下什么情况。代码发在下面

 //先是两个函数
int DetermineProcessName(char *szName)//判断当前调用的进程
{
 int nEProcess;
 nEProcess=(int)PsGetCurrentProcess();
 if(nEProcess==0)return 0;
 if(MmIsAddressValid(szName)&&MmIsAddressValid((PVOID)(nEProcess+EPROCESS_IMAGE_NAME)))//eprocess+0x174   XP系统  EPROCESS_IMAGE_NAME = 174
 {
  if(strcmp((char*)(nEProcess+EPROCESS_IMAGE_NAME),szName)==0)
  {
   return 1;
  }
 }
 return 0;
}




int EProcessIsMineA(PEPROCESS pProcess)//判断EProcess是否在白名单
{
 ULONG i;
 char *pName;
 if(pProcess==NULL||!MmIsAddressValid(pProcess))
 {
  return 0;
 }
 pName = (char*)((int)pProcess + EPROCESS_IMAGE_NAME);
 if(MmIsAddressValid(pName))
 {
  for(i=0;i<ulNum;i++)
  {
   if(!strcmp(ulName[i],pName))
   {
    return 1;
   }
  }
 }
 return 0;
}
 


//自己的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       
     )
{
 WCHAR *pFileName;
 WCHAR ch = L'\\'; 
 ULONG i;
 
 if(DetermineProcessName("explorer.exe"))//判断是不是系统调用
 {
  return ((NTCREATEFILE)OldNtCreateFile)(FileHandle,DesiredAccess,ObjectAttributes,IoStatusBlock,
   AllocationSize,FileAttributes,ShareAccess,CreateDisposition,CreateOptions,EaBuffer,EaLength);
 }
 if(EProcessIsMineA(PsGetCurrentProcess()))//判断是不是自己的进程调用
 {  
  return ((NTCREATEFILE)OldNtCreateFile)(FileHandle,DesiredAccess,ObjectAttributes,IoStatusBlock,
   AllocationSize,FileAttributes,ShareAccess,CreateDisposition,CreateOptions,EaBuffer,EaLength);
 }
 
 if(MmIsAddressValid(ObjectAttributes))
 {
  if(MmIsAddressValid(ObjectAttributes->ObjectName))
  {
   if(MmIsAddressValid((ObjectAttributes->ObjectName)->Buffer))
   {
    pFileName = wcsrchr((ObjectAttributes->ObjectName)->Buffer,ch) + 1;//文件路径中获取文件名字
   
    if(MmIsAddressValid(pFileName))
    {
     
     for(i=0;i<ulNum;i++)//判断打开的文件是不是要保护的文件
     {
      if(!wcscmp(ulNameW[i], pFileName))//ulNameW[i]
      { 
       return 0xC0000024;
      }
     }
    }
   }
  }
 }
 
 return ((NTCREATEFILE)OldNtCreateFile)(FileHandle,DesiredAccess,ObjectAttributes,IoStatusBlock,
  AllocationSize,FileAttributes,ShareAccess,CreateDisposition,CreateOptions,EaBuffer,EaLength); 
}

 
 

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 5
活跃值: (127)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
大神们 兄弟们帮忙看看是怎么回事  谢谢拉
2015-4-24 15:14
0
雪    币: 5
活跃值: (127)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
Hook后不会直接死机     10个小时左右运气好的话 12个小时  。。。每次必死机 无一幸免。。。
2015-4-24 15:18
0
雪    币: 52
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
至少把dump文件分析一下呀
2015-4-24 16:40
0
雪    币: 5
活跃值: (127)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
没有蓝屏光死机也有dump么
2015-4-24 16:42
0
雪    币: 52
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
确定是你的驱动引起的吗?如果是又没有dump文件就只有加打印log了。
2015-4-24 16:51
0
雪    币: 1443
活跃值: (96)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
google搜ctrl+scroll+scroll大法
2015-4-24 18:07
0
游客
登录 | 注册 方可回帖
返回
//