十二 发表于 2011-1-19 15:28:36

进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


真PKS同志 发表于 2011-1-19 17:07:26

12神触你是来骗加分和精品的么……&

十二 发表于 2011-1-19 17:40:21

这种东西上网一抓一把 有驱动的无驱动的 - =
我只是做了一个注释或许还有错的地方= =方便理解而已。。。。。。。。

十二 发表于 2011-1-23 18:43:30

;>>>>>>>>>>>>>>>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:18:01

本帖最后由 十二 于 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]
查看完整版本: 进RING0 WDM 注释