(vc++ 98版的 xp) C++如何实现ring0
2008-10-20 09:04
369 查看
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
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
相关文章推荐
- 晒晒C++:虚函数的真相(VC编译器如何实现“virtual ”规则)
- 引用(C++里的藿香正气)的真相-(VC编译器如何实现引用规则)
- 如何实现虚函数的规则(VC中 C++ virtual 编译规则)
- 晒晒C++:虚函数的真相(VC编译器如何实现“virtual ”规则)
- 晒晒C++:虚函数的真相(VC编译器如何实现“virtual ”规则)(转载的非原创)
- 晒晒C++:虚函数的真相(VC编译器如何实现“virtual ”规则)
- object c++如何实现反射机制
- 编译器是如何用汇编语言实现C++的虚函数表和隐式传递this指针(二)
- 如何实现不能被继承的C++的类,且能正常使用
- ---===在Windows95/98中实现苹果窗口界面(vc6)===---
- C++ 接口与实现分离技术---如何将文件间的编译关系降至最低
- c++面试题2:虚函数是如何实现的?
- C++的多态如何在编译和运行期实现
- 如何用C语言实现类似C++中的多态
- 通过实验了解C++中的类是如何实现多态
- VC无负担实现XP风格界面
- 如何利用C/C++逐行读取txt文件中的字符串(可以顺便实现文本文件的复制)
- 如何用C++实现自己的Tensorflow
- 在C++中如何实现文件的读写?
- C/C++:如何在Vc程序中加载JPG图片