首页
社区
课程
招聘
[求助]问一个关于 SSDT HOOK NtCreateUserProcess小问题
发表于: 2009-4-21 01:30 8125

[求助]问一个关于 SSDT HOOK NtCreateUserProcess小问题

2009-4-21 01:30
8125
NTSTATUS FakedNtCreateUserProcess (PHANDLE ProcessHandle,
                                                                                PHANDLE ThreadHandle,
                                                                                PVOID Parameter2,
                                                                                PVOID Parameter3,
                                                                                PVOID ProcessSecurityDescriptor,
                                                                                PVOID ThreadSecurityDescriptor,
                                                                                PVOID Parameter6,
                                                                                PVOID Parameter7,
                                                                                PRTL_USER_PROCESS_PARAMETERS ProcessParameters,
                                                                                PVOID Parameter9,
                                                                                PVOID pProcessUnKnow)
{
        char aProcessName[MAXPATHLEN];
        char aPathName[MAXPATHLEN];
        PWCHAR        wszFilePath ;
        ULONG TempCurrentProcess;

        TempCurrentProcess=(ULONG)PsGetCurrentProcess();
        if (HipsCurrentProcess==TempCurrentProcess)
        {
           return  ((NtCreateUserProcess)RealNtCreateUserProcess) (ProcessHandle,
                                                                                ThreadHandle,
                                                                                Parameter2,
                                                                                Parameter3,
                                                                                ProcessSecurityDescriptor,
                                                                                ThreadSecurityDescriptor,
                                                                                Parameter6,
                                                                                Parameter7,
                                                                                ProcessParameters,
                                                                                Parameter9,
                                                                                pProcessUnKnow);
        }
        else
        {
         ZeroMemory(aProcessName,MAXPATHLEN);

     //拒绝漏洞
         ConvertFileNameWCHARToCHAR(ProcessParameters->ImagePathName.Buffer,aPathName);
         GetProcessName2(aProcessName);

         strcat(aProcessName,"##");
         if (GoOrNot(aProcessName,aPathName))
         {
           return  ((NtCreateUserProcess)RealNtCreateUserProcess) (ProcessHandle,
                                                                                ThreadHandle,
                                                                                Parameter2,
                                                                                Parameter3,
                                                                                ProcessSecurityDescriptor,
                                                                                ThreadSecurityDescriptor,
                                                                                Parameter6,
                                                                                Parameter7,
                                                                                ProcessParameters,
                                                                                Parameter9,
                                                                                pProcessUnKnow);
         }
         else
         {
                ProcessHandle = NULL;
                return RETURN_ERRO_NOBOX;
         }
        }
        return 0;
}

如上面函数 如何检测参数 PRTL_USER_PROCESS_PARAMETERS ProcessParameters,地址是真实有效的呢而且保证其子结构指针如ProcessParameters->ImagePathName.Buffer也真实有效呢?

希望向各位学习,积累宝贵的驱动开发经验和知识

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
2
那个东西是在PEB中的,读的时候try…except再加ProbeForRead。这种问题MJ比较有经验
2009-4-21 07:47
0
雪    币: 371
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hyp
3
这不是X盾的代码吗
2009-4-21 09:06
0
游客
登录 | 注册 方可回帖
返回
//