打印本文 打印本文 关闭窗口 关闭窗口
转帖:Windows NT/2000/XP下不用驱动的Ring0代码实现
作者:武汉SEO闵涛  文章来源:敏韬网  点击数2230  更新时间:2009/4/23 10:51:26  文章录入:mintao  责任编辑:mintao
;    // 386 call gate
             cg->app_system = 0;      // A system descriptor
             cg->dpl = 3;             // Ring 3 code can call
             cg->present = 1;
             cg->offset_16_31 = HIWORD(Entry);
             setcg=TRUE;
             break;
          }

       if(!setcg){
            ZwClose(hSection);
            return 0;
       }

       short farcall[3];

       farcall[2]=((short)((ULONG)cg-(ULONG)BaseAddress))|3;  //Ring 3 callgate;

       if(!VirtualLock((PVOID)Entry,seglen))
          {
             printf("Error VirtualLock:");
             PrintWin32Error(GetLastError());
             return 0;
          }

       SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_TIME_CRITICAL);

       Sleep(0);

       _asm call fword ptr [farcall]

       SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_NORMAL);

       VirtualUnlock((PVOID)Entry,seglen);

       //Clear callgate
       *(ULONG *)cg=0;
       *((ULONG *)cg+1)=0;

       ZwClose(hSection);
       return TRUE;

    }

  我在提供的代码中演示了对Control Register与I/O端口的操作。CIH病毒在Windows 9X中就是因为获得Ring 0权限才有了一定的危害,但Windows NT/2000毕竟不是Windows 9X,她已经有了比较多的安全审核机制,本文提供的代码也要求具有Administrator权限,但如果系统存在某种漏洞,如缓冲区溢出等等,还是有可能获得这种权限的,所以我不对本文提供的方法负有任何的责任,所有讨论只是一个技术热爱者在讨论技术而已。谢谢! 

  参考资料:
    1.Intel Corp<<Intel Architecture Software Developer''''s Manual,Volume 3>>   

------------------------------------------------------------------------------------------------
文章来自:http://www.geocities.jp/webcrazyjp/ntring0.htm (这家伙竟用日本的域名
作者:WebCrazy(
http://webcrazy.yeah.net/)

 

上一页  [1] [2] [3] 

打印本文 打印本文 关闭窗口 关闭窗口