首页
社区
课程
招聘
为啥一hook ZwCreateKey过一会就说fatal error?
2006-4-16 17:26 5164

为啥一hook ZwCreateKey过一会就说fatal error?

2006-4-16 17:26
5164
NTSTATUS NewZwCreateKey(
                                OUT PHANDLE KeyHandle,
                                IN ACCESS_MASK DesiredAccess,
                                IN POBJECT_ATTRIBUTES ObjectAttributes,
                                IN ULONG TitleIndex,
                                IN PUNICODE_STRING Class OPTIONAL,
                                IN ULONG CreateOptions,
                                OUT PULONG Disposition OPTIONAL
)
{
   HANDLE RegKeyHandle;
   NTSTATUS ntStatus;
   OBJECT_ATTRIBUTES    oba;
   ULONG PDisposition;
   WCHAR KeyName[]=L"\\Registry\\Machine\\Software\\Microsoft\\Windows\\CurrentVersion\\Run";
   UNICODE_STRING UnicodeStringBuffer;
   
   RtlInitUnicodeString(&UnicodeStringBuffer,KeyName);
  InitializeObjectAttributes(&oba,&UnicodeStringBuffer,OBJ_CASE_INSENSITIVE,NULL,NULL);

   ntStatus=ZwCreateKey(&RegKeyHandle,KEY_ALL_ACCESS,&oba,0,0,REG_OPTION_VOLATILE,&PDisposition);
   if( NT_SUCCESS(ntStatus))
   {
       if (RegKeyHandle==KeyHandle)
       {   
           if (PDisposition==REG_CREATED_NEW_KEY)
           {   
               return TRUE;
           }
           else
           {   
               return TRUE;
           }
           return TRUE;
       }
   }
   return TRUE;
}
省略掉若干细节,算了源码放上来吧,说不清楚打算hook注册表和文件相关的,删除的中午试了试,可以,这个老死,不知道哪里不对,windbg又用的比较烂,谁帮个忙看看吧,thx

阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开 发者可享99元/年,续费同价!

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (1)
雪    币: 222
活跃值: (10)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
drwch 3 2006-4-27 08:23
2
0
if (RegKeyHandle==KeyHandle)

这句你可以编译过去?

一个是HANDLE一个是HANDLE *耶怎么做比较……

还有STATUS_SUCCESS的值是0,return TRUE是怎么回事

再仔细看看,你都没有恢复原zwCreateKey的指针呀,变成自己循环调用自己去了
游客
登录 | 注册 方可回帖
返回