首页
社区
课程
招聘
[求助]郁金香驱动教程44课问题
发表于: 2012-5-26 14:25 4736

[求助]郁金香驱动教程44课问题

2012-5-26 14:25
4736
NTSTATUS __declspec(naked) __stdcall MyNtOpenProcess(
        OUT     PHANDLE ProcessHandle,
        IN     ACCESS_MASK DesiredAccess,
        IN     POBJECT_ATTRIBUTES ObjectAttributes,
        IN     PCLIENT_ID ClientId )
{
        NTSTATUS     rc;
        HANDLE       PID;

        KdPrint(("++++++++++++Entry MyNtOpenProcess int   ++++++++++++++\n"));  

        //rc = (NTSTATUS)RealNtOpenProcess( ProcessHandle, DesiredAccess, ObjectAttributes, ClientId );        

        if( (ClientId != NULL) )    //这里一直为空,无法获取进程ID,郁闷!!         {
                PID = ClientId->UniqueProcess;          
                KdPrint(( "------------------------- PID=%d--------------\n",(int*)PID ));

                // 如果是被保护的PID,则拒绝访问,并将句柄设置为空
                if(PID == MyPID)
                {
                        KdPrint(("被保护进程 MyPID=%d \n",(int)MyPID));
                        //调试输出 类似C语言的 Printf
                        ProcessHandle = NULL; //这个是关键
                        rc = STATUS_ACCESS_DENIED; //这个返回值
                        //PsLookupProcessByProcessId((ULONG)PID,&EP);
                        EP=PsGetCurrentProcess();                         
                        KdPrint((" ACESS Process Name  --:%s--   \n",(PTSTR)((ULONG)EP+0x174)));
            __asm
            {
                retn 0x10
            }
                }
        }
    __asm
    {   int 3           
    push    0C4h
    mov eax,RealNtOpenProcess //
    add eax,5
    jmp eax

    }
        //return rc;
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 209
活跃值: (143)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
貌似__declspec(naked)引起的
2012-5-27 19:58
0
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
在函数开头加上这句试试看吧


_asm{
push ebp
mov ebp,esp
pushad
pushfd
}

//结束前
__asm
{
popfd
popad
mov esp,ebp
pop ebp
push 0C4h
mov eax,RealNtOpenProcess //
add eax,5
jmp eax

}


欢迎加我群一起交流 QQ群:84031558 调试+输出=王道
2012-5-27 21:08
0
雪    币: 193
活跃值: (1215)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这段也蓝屏了

#pragma PAGECODE
void __declspec(naked)  myInt3Proc()
{       
        //__asm retn 100;
        __asm
        {
                pushad
                pushfd
        }

        KdPrint(("\n entry my Int3Proc \n"));
        //在这里添加自己的条件过滤代码
        //获取进程上下文
        PEPROCESS EP;         
        EP=PsGetCurrentProcess();
        // (PTSTR)((ULONG)EP+0x174)是否等于 需要反断点的进程
        if (strcmp((PTSTR)((ULONG)EP+0x174),"notepad.exe")==0)
        {
                //需要保护的进程 直接蓝屏
                KdPrint(("\n 蓝屏 蓝屏 蓝屏 \n"));
                __asm retn 100;
        }
        __asm
        {
            popfd
            popad
   
        }

        __asm
        {

                    push 0
                        mov word ptr [esp+2], 0
                        //前2条需要恢复的指令 占9字节
                        jmp jmpaddr_int3proc_9
        }

}
2012-5-29 08:01
0
游客
登录 | 注册 方可回帖
返回
//