首页
社区
课程
招聘
[求助]关于hook_idt内联汇编的问题
发表于: 2009-2-4 15:04 3944

[求助]关于hook_idt内联汇编的问题

2009-2-4 15:04
3944
__declspec(naked) MyKiSystemService()
/* thanks to mad russians */
{
        __asm{
                pushad
                pushfd
                push fs
                mov bx,0x30
                mov fs,bx
                push ds
                push es

                mov ebx, eax;

TestPID:
                call getPID;
                cmp  eax, gProcessID;
                jne  Finish;

TestSyscallLimit:
                cmp ebx, gSyscallLimit;
                jge  Finish;

PrintDebug:
                mov  g_EDX, edx;
                push ebx;
                call PrintDbg;

Finish:               
                pop es
                pop ds
                pop fs
                popfd
                popad

                jmp        KiRealSystemServiceISR_Ptr;
        }
}

请问上面加颜色的的那两句有什么用啊?为什么要往fs里面放 0x30啊?

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
2
KGDT_R0_PCR,GDT Descriptor中的PCR的offset~
2009-2-4 15:22
0
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
3
这是因为当 CPU运行于内核中时fs应选择其KPCR数据结构所在的段,从而使fs:0指向这KPCR结构的起点,这是Windows的一个约定。

===
参考漫谈兼容内核第25
2009-2-4 15:25
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
多谢了,
2009-2-5 17:19
0
游客
登录 | 注册 方可回帖
返回
//