(vc++ 98版的 xp) C++如何实现ring0

offset SavedGate; movsd; movsd; } } void __fastcall TForm1::Button1Click(TObject *Sender) { GotoRing0(); } ebx; // 开始恢复原中断门 mov esi offset OurGate; movsd; movsd; int IntNo; mov edi ebx; mov esi ebx; movsd; movsd; mov edi offset SavedGate; mov esi IntNo*8; mov edi dword ptr [IDTR+2]; add ebx ax; sidt fword ptr IDTR; mov ebx 16; mov [OurGate+6] ax; shr eax offset NewInt; mov [OurGate] 0x0000}; void GotoRing0() { asm { mov eax 0xee00 0x0028 SavedGate; WORD OurGate[4]={0 CR0; // 试验一下Ring3不能执行的特权指令 } void __declspec(naked) NewInt() //新中断 { Ring0Proc(); asm iretd; } #define IntNo 9 DWORDLONG IDTR 代码如下:void Ring0Proc() // 在Ring0中执行你自已的代码 { asm mov eax
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值