首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

程序怎么从ring3跳到ring0、求指导

2012-03-23 
程序如何从ring3跳到ring0、求指导、 - C++ Builder / Windows SDK/API有无驱动都可以、内联汇编也行、求思路、

程序如何从ring3跳到ring0、求指导、 - C++ Builder / Windows SDK/API
有无驱动都可以、内联汇编也行、求思路、

[解决办法]
据我所知无驱动的方法仅适合2000、XP、2003(不打补丁),而XP、2003用AMD64的都有问题

代码不记得了,帮你google了一下

C/C++ code
void   Ring0Proc()     //   在Ring0中执行你自已的子程序    {              asm   mov   eax,CR0;     //   测验Ring3不能执行的特权指令    }    //   =====================================================    void     __declspec(naked)   NewInt()   //新中断    {                Ring0Proc();                asm     iretd;    }    #define   IntNo     3       void     GotoRing0()    {                static   DWORDLONG   Buf;             //静态或全局变量                asm                      {                            mov         edi,offset   Buf;                            sidt       [edi];               //   取IDT->Buf                            mov         ebx,[edi+2];   //   求中断门基址                            add         ebx,IntNo*8;                            mov         esi,ebx;                            push       edi;                            push       esi;                            movsd;                 //保存原中断门->Buf                            movsd;                               cli;                            mov         eax,offset   NewInt;                            mov         [ebx],ax;                            shr         eax,16;                            mov         [ebx+6],ax;     //   修改新中断门                            mov         ax,0ee00h;                            mov         [ebx+4],ax;     //   设置门属性                               int         IntNo;                               pop         edi;                            pop         esi;                            movsd;                             //   恢复原中断门                            movsd;                            sti;                      }    }    //   ===================================================       void   __fastcall   TForm1::Button1Click(TObject   *Sender)    {              GotoRing0();    }
[解决办法]
以前WIN98可以,后来MS又改动了。
[解决办法]
只能使用驱动程序,其他方法都被封了
[解决办法]
VS+DriverStudio构建 Driver CB构建DLL&APP 无驱动方式没玩过
[解决办法]
我知道,这个你应该去看一下 你那个CPU系列的数据手册。

热点排行