进RING0 WDM 注释
本帖最后由 十二 于 2011-1-23 18:45 编辑pushfd //标志寄存器入栈
pushad //同上通用寄存器入栈,保护现场。
push edx //栈帧操作EDX入栈,保存EDX
sgdt //获取GDTR,ESP-2 得到Base。
pop edx //弹出GDTR Base送EDX。
mov eax,edx //GDTR Base送EAX。
mov ecx,3e0h //3E0送ECX。
MOV BYTE PTR DS:,0C3h //在GDTR Base起始处添加RETN指令
mov word ptr ,AX //AX送GDTR Base+3E0,送GDTR Base低16位给新建调用门。
shr eax,16 //逻辑右移,高位填0
mov word ptr ,AX //AX送GDTR Base+3E0+6,送GDTR Base高16位给新建调用门。
mov dword ptr ,0ec0003e8h //调用门DPL选择子信息。
mov dword ptr ,0000ffffh //建立Ring0描述符Limit大小。
mov dword ptr ,00cf9a00h //Ring0 段描述符DPL等信息。
popad
popfd //清理现场
xor eax,eax //Eax清零
ret 8 //返回后+8
12神触你是来骗加分和精品的么……& 这种东西上网一抓一把 有驱动的无驱动的 - =
我只是做了一个注释或许还有错的地方= =方便理解而已。。。。。。。。
;>>>>>>>>>>>>>>>STRUCT>>>>>>>>>>>>>>>>>>>>>>>>>>>>
CALLGATE STRUCT
OFFSETL DW 0
SELECTOR DW 0
DCOUNT DB 0
GTYPE DB 0
OFFSETH DW 0
CALLGATE ENDS
DESCRIPTORSTRUCT
LIMITL DW 0
BASEL DW 0
BASEM DB 0
ATTRIBUTESDW 0
BASEH DB 0
DESCRIPTORENDS
补一个CallGates和0级描述符的结构 本帖最后由 十二 于 2011-1-24 12:19 编辑
pushfd
pushad
push edx
sgdt
pop edx
mov eax,edx
mov ecx,120h
mov byte ptr ,0c3h
mov word ptr ,ax
mov word ptr ,130h
mov byte ptr ,00h
mov byte ptr ,0ech
shr eax,16
mov word ptr ,ax
mov word ptr ,0FFFFh
mov word ptr ,00000h
mov byte ptr ,000h
mov word ptr ,0CF9Ah
mov byte ptr ,000H
popad
popfd缩写还原,方便理解。
页:
[1]