扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:黄东 来源:天极网 2007年10月19日
关键字: Visual C++ CPU 特权指令
struct GDT_DESCRIPTOR{ WORD LimitL;//段界限低16位 WORD BaseL;//基地址低16位 BYTE BaseM;//基地址中间8位 BYTE AttriB;//段属性 BYTE LimitH;//段界限的高4位(包括段属性的高4位) BYTE BaseH;//基地址的高8位 } |
WORD OffsetL; // 32位偏移的低16位 WORD Selector; //选择子 BYTE Dcount; //双字计数字段 BYTE Gtype; //当低4位值为0xC是,这是一个调用门 WORD LimitH; //32位偏移的高16位 } |
struct GDTR{ WORD wGDTLimit; DWORD dwGDTBase; }; |
#pragma pack(1) struct GDT_DESCRIPTOR{ WORD LimitL; //段界限低16位 WORD BaseL; //基地址低16位 BYTE BaseM; //基地址中间8位 BYTE AttriB; //段属性 BYTE LimitH; //段界限的高4位(包括段属性的高4位) BYTE BaseH; //基地址的高8位 }; struct GATE_DESCRIPTOR{ WORD OffsetL; // 32位偏移的低16位 WORD Selector; //选择子 BYTE Dcount; //双字计数字段 BYTE Gtype; //当低4位值为0xC是,这是一个调用门 WORD LimitH; //32位偏移的高16位 }; struct GDTR{ WORD wGDTLimit; DWORD dwGDTBase; }; #pragma pack() |
__declspec(naked) void GetCR0_Ring0() { _asm{ mov ebx,cr0 //特权指令 mov [EAX],ebx retf } } bool CallRing0(PVOID pvRing0FuncAddr,PWORD pVal) { struct GDT_DESCRIPTOR *pGDTDescriptor; struct GDTR gdtr; WORD CallgateAddr[3]; WORD wGDTIndex = 1; //取得全局描述符表GDT _asm Sgdt [gdtr] // 空选择子有特殊用途,跳过它,从第二个选择子开始搜索 pGDTDescriptor = (struct GDT_DESCRIPTOR *)(gdtr.dwGDTBase + 8); for (wGDTIndex = 1; wGDTIndex < (gdtr.wGDTLimit / 8); wGDTIndex++) { if (pGDTDescriptor->AttriB == 0) { struct GATE_DESCRIPTOR *pGate; pGate = (struct GATE_DESCRIPTOR *) pGDTDescriptor; pGate->OffsetL = LOWORD(pvRing0FuncAddr); //选择子0x28总是指向Ring0的代码段 pGate->Selector = 0x28; pGate->Dcount = 0; pGate->Gtype = 0xEC; pGate->OffsetH = HIWORD(pvRing0FuncAddr); //准备远程调用参数 CallgateAddr[0] = 0x0; CallgateAddr[1] = 0x0; CallgateAddr[2] = (wGDTIndex << 3) | 3; //进入Ring0 _asm Mov EAX,[pVal] _asm call FWORD PTR [CallgateAddr] //归还刚才使用的全局描述符 memset(pGDTDescriptor, 0, 8); return true; } //下一个全局描述符 pGDTDescriptor++; } //没有空闲的全局描述符 return false; } |
void CMyRing0Dlg::OnGetcr0() { // TODO: Add your control notification handler code here WORD Val=0; char str[16]; if(!CallRing0((PVOID)GetCR0_Ring0,&Val)){ AfxMessageBox("系统资源不够!"); return; }; sprintf(str,"CR0=%3d",Val); AfxMessageBox(str); } |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者