阅读:1592回复:5
用汇编写的简单的WDM的一些简单的问题
sgdt [esp-2]
pop edx mov eax,edx ;EDX.EAX->GDT BASE mov ecx, 3e8h .if dword ptr [eax+ecx+4]!=00cf9a00h ;3e8 ring0 code32 mov byte ptr [eax],0c3h ;ret--------------------------->这个是什么意思 mov dword ptr [eax+ecx],0000ffffh mov dword ptr [eax+ecx+4],00cf9a00h .endif ..... popad popfd xor eax, eax ;固定格式? ret 8 |
|
沙发#
发布于:2005-05-13 22:36
你用什么编译器来编译它呢?
|
|
板凳#
发布于:2005-05-14 16:28
用的MASM...
|
|
地板#
发布于:2005-05-16 10:14
你看下MGF的代码跟踪下就很清楚了,把CALLGATE的第1条指令放在GDT的NULL SELCTOR中,然后进入RING0将执行这条指令,从而返回到正确的地方执行....
|
|
|
地下室#
发布于:2005-05-16 19:42
wowocock 您终于现身了...您的代码还是您来解答比较好...
“把CALLGATE的第1条指令放在GDT的NULL SELCTOR中,然后进入RING0将执行这条指令” 我很明白你的意思...因为这是我在研究您的代码后得出的唯一结论... 我唯一不明白的地方是,为什么call gate的第一条指令在NULL SELCTOR中?这个原理我在书上并没有看到... btw:我没有MGF的代码,能提供吗?谢谢 |
|
5楼#
发布于:2005-05-17 16:59
可能我还没说清楚...
如果说call gate以后的第一条指令在NULL SELCTOR中,是不是说所有的调用门都是这样呢? |
|