首页
社区
课程
招聘
[求助]一个严重的问题,请教大家Sysenter
发表于: 2007-11-19 15:24 8909

[求助]一个严重的问题,请教大家Sysenter

2007-11-19 15:24
8909
Sysenter到底是怎么执行的??
希望有人把Sysenter和INT起来对比来讲讲!

资料都说Sysenter后转入ring0,执行ssdt!

但漏了最重要的细节!

Sysenter后肯定还执行了一些内核代码,再转入SSDT的!!

我到处找资料,只有英文的,但这种专业性太强的东西不敢乱理解!

所以来问问!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 331
活跃值: (56)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
2
LZ又激动了。
2007-11-19 15:45
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
恩, 我也不是很懂,我直接IDA看的。
.text:004067D1 _KiSystemService proc near
.text:004067D1
.text:004067D1                 push    0
.text:004067D3                 push    ebp
.text:004067D4                 push    ebx
.text:004067D5                 push    esi
.text:004067D6                 push    edi
.text:004067D7                 push    fs
.text:004067D9                 mov     ebx, 30h
.text:004067DE                 mov     fs, bx
.text:004067E0                 push    large dword ptr fs:0
.text:004067E7                 mov     large dword ptr fs:0, 0FFFFFFFFh
.text:004067F2                 mov     esi, large fs:124h
.text:004067F9                 push    dword ptr [esi+140h]
.text:004067FF                 sub     esp, 48h
.text:00406802                 mov     ebx, [esp+68h+arg_0]
.text:00406806                 and     ebx, 1
.text:00406809                 mov     [esi+140h], bl
.text:0040680F                 mov     ebp, esp
.text:00406811                 mov     ebx, [esi+134h]
.text:00406817                 mov     [ebp+3Ch], ebx
.text:0040681A                 mov     [esi+134h], ebp
.text:00406820                 cld
.text:00406821                 mov     ebx, [ebp+60h]
.text:00406824                 mov     edi, [ebp+68h]
.text:00406827                 mov     [ebp+0Ch], edx
.text:0040682A                 mov     dword ptr [ebp+8], 0BADB0D00h
.text:00406831                 mov     [ebp+0], ebx
.text:00406834                 mov     [ebp+4], edi
.text:00406837                 test    byte ptr [esi+2Ch], 0FFh
.text:0040683B                 jnz     Dr_kss_a
.text:0040683B
.text:00406841
.text:00406841 loc_406841:                             ; CODE XREF: Dr_kss_a+10j
.text:00406841                                         ; Dr_kss_a+7Cj
.text:00406841                 sti
.text:00406842                 jmp     loc_406932
.text:00406842
.text:00406847 ; ---------------------------------------------------------------------------
.text:00406847
.text:00406847 _KiFastCallEntry2:                      ; DATA XREF: V86_kit1_a:loc_4075E1o
.text:00406847                 mov     ecx, 30h
.text:0040684C                 mov     fs, cx
.text:0040684E                 mov     ecx, 23h
.text:00406853                 mov     ds, cx
.text:00406855                 mov     es, cx
.text:00406857                 mov     ecx, large fs:40h
.text:0040685E                 mov     esp, [ecx+4]
.text:00406861                 push    23h
.text:00406863                 push    edx
.text:00406864                 pushf
.text:00406865                 or      byte ptr [esp+1], 1
.text:0040686A                 jmp     short loc_4068BA
.text:0040686A
.text:0040686C ; ---------------------------------------------------------------------------
.text:0040686C
.text:0040686C loc_40686C:                             ; CODE XREF: _KiSystemService+BFj
.text:0040686C                                         ; _KiSystemService+130j
.text:0040686C                 mov     ecx, large fs:40h
.text:00406873                 mov     esp, [ecx+4]
.text:00406876                 push    0
.text:00406878                 push    0
.text:0040687A                 push    0
.text:0040687C                 push    0
.text:0040687E                 push    23h
.text:00406880                 push    0
.text:00406882                 push    20202h
.text:00406887                 push    1Bh
.text:00406889                 push    0
.text:0040688B                 jmp     _KiTrap06
.text:0040688B
.text:00406890 ; ---------------------------------------------------------------------------
.text:00406890                 jmp     short loc_40686C
.text:00406890
.text:00406892 ; ---------------------------------------------------------------------------
.text:00406892                 lea     esp, [esp+0]
.text:00406899                 lea     ebx, [ebx+0]
.text:00406899
.text:0040689F
.text:0040689F _KiFastCallEntry:                       ; DATA XREF: V86_kit1_a+99o
.text:0040689F                                         ; KiLoadFastSyscallMachineSpecificRegisters(x)+24o
.text:0040689F                 mov     ecx, 23h
.text:004068A4                 push    30h
.text:004068A6                 pop     fs
.text:004068A8                 mov     ds, cx
.text:004068AA                 mov     es, cx
.text:004068AC                 mov     ecx, large fs:40h
.text:004068B3                 mov     esp, [ecx+4]
.text:004068B6                 push    23h
.text:004068B8                 push    edx
.text:004068B9                 pushf
.text:004068B9
.text:004068BA
.text:004068BA loc_4068BA:                             ; CODE XREF: _KiSystemService+99j
.text:004068BA                 push    2
.text:004068BC                 add     edx, 8
.text:004068BF                 popf
.text:004068C0                 or      byte ptr [esp+1], 2
.text:004068C5                 push    1Bh
.text:004068C7                 push    dword ptr ds:0FFDF0304h
.text:004068CD                 push    0
.text:004068CF                 push    ebp
.text:004068D0                 push    ebx
.text:004068D1                 push    esi
.text:004068D2                 push    edi
.text:004068D3                 mov     ebx, large fs:1Ch
.text:004068DA                 push    3Bh
.text:004068DC                 mov     esi, [ebx+124h]
.text:004068E2                 push    dword ptr [ebx]
.text:004068E4                 mov     dword ptr [ebx], 0FFFFFFFFh
.text:004068EA                 mov     ebp, [esi+18h]
.text:004068ED                 push    1
.text:004068EF                 sub     esp, 48h
.text:004068F2                 sub     ebp, 29Ch
.text:004068F8                 mov     byte ptr [esi+140h], 1
.text:004068FF                 cmp     ebp, esp
.text:00406901                 jnz     loc_40686C
.text:00406901
.text:00406907                 and     dword ptr [ebp+2Ch], 0
.text:0040690B                 test    byte ptr [esi+2Ch], 0FFh
.text:0040690F                 mov     [esi+134h], ebp
.text:00406915                 jnz     Dr_FastCallDrSave
.text:00406915
.text:0040691B
.text:0040691B loc_40691B:                             ; CODE XREF: Dr_FastCallDrSave+10j
.text:0040691B                                         ; Dr_FastCallDrSave+7Cj
.text:0040691B                 mov     ebx, [ebp+60h]
.text:0040691E                 mov     edi, [ebp+68h]
.text:00406921                 mov     [ebp+0Ch], edx
.text:00406924                 mov     dword ptr [ebp+8], 0BADB0D00h
.text:0040692B                 mov     [ebp+0], ebx
.text:0040692E                 mov     [ebp+4], edi
.text:00406931                 sti
.text:00406931
.text:00406932
.text:00406932 loc_406932:                             ; CODE XREF: _KiBBTUnexpectedRange+18j
.text:00406932                                         ; _KiSystemService+71j
.text:00406932                 mov     edi, eax
.text:00406934                 shr     edi, 8
.text:00406937                 and     edi, 30h
.text:0040693A                 mov     ecx, edi
.text:0040693C                 add     edi, [esi+0E0h]
.text:00406942                 mov     ebx, eax
.text:00406944                 and     eax, 0FFFh
.text:00406949                 cmp     eax, [edi+8]
.text:0040694C                 jnb     _KiBBTUnexpectedRange
.text:0040694C
.text:00406952                 cmp     ecx, 10h
.text:00406955                 jnz     short loc_406972
.text:00406955
.text:00406957                 mov     ecx, large fs:18h
.text:0040695E                 xor     ebx, ebx
.text:0040695E
.text:00406960
.text:00406960 loc_406960:                             ; DATA XREF: Dr_kite_a+1C0o
.text:00406960                 or      ebx, [ecx+0F70h]
.text:00406966                 jz      short loc_406972
.text:00406966
.text:00406968                 push    edx
.text:00406969                 push    eax
.text:0040696A                 call    ds:_KeGdiFlushUserBatch
.text:00406970                 pop     eax
.text:00406971                 pop     edx
.text:00406971
.text:00406972
.text:00406972 loc_406972:                             ; CODE XREF: _KiSystemService+184j
.text:00406972                                         ; _KiSystemService+195j
.text:00406972                 inc     large dword ptr fs:638h
.text:00406979                 mov     esi, edx
.text:0040697B                 mov     ebx, [edi+0Ch]
.text:0040697E                 xor     ecx, ecx
.text:00406980                 mov     cl, [eax+ebx]
.text:00406983                 mov     edi, [edi]
.text:00406985                 mov     ebx, [edi+eax*4]                                                                                                                                                                                                 =================>取SSDT
.text:00406988                 sub     esp, ecx
.text:0040698A                 shr     ecx, 2
.text:0040698D                 mov     edi, esp
.text:0040698F                 cmp     esi, ds:_MmUserProbeAddress
.text:00406995                 jnb     loc_406B43
.text:00406995
.text:0040699B
.text:0040699B loc_40699B:                             ; CODE XREF: _KiSystemService+376j
.text:0040699B                                         ; DATA XREF: Dr_kite_a+1B6o
.text:0040699B                 rep movsd
.text:0040699D                 call    ebx                                                                                                                                                                                                                                                        =================>系统调用
.text:0040699D

如果有贴错,请各位大侠指正。
2007-11-19 15:46
0
雪    币: 331
活跃值: (56)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
4
你贴的是int 2E的
sysenter对应的是
FastCall。不过干的事情差不多
2007-11-19 15:48
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
int 后cpu直接查找IDT表执行去了.
Sysenter 呢?? 转到什么地方执行去了?
2007-11-19 15:50
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
text:004067D1 _KiSystemService proc near                             ===>int 2e
...
text:00406847 _KiFastCallEntry2:                                            
...
text:0040689F _KiFastCallEntry:                                              ===>Sysenter

...
text:00406985                 mov     ebx, [edi+eax*4]
...
text:0040699D                 call    ebx

Isaiah  是这个FastCall吗?
2007-11-19 15:54
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7

LZ 是什么意思啊??
PS 是什么意思啊?? 难道是PHOTOSHOP?
2007-11-19 15:55
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
本帖中

LZ 指 c李拨
PS 本帖里面没看到

我在灌水
2007-11-19 16:05
0
雪    币: 93944
活跃值: (200219)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
9
建议提问参看一下:

http://bbs.pediy.com/showthread.php?t=769

提问的艺术.OK
2007-11-19 16:09
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
引用"本帖中

LZ 指 c李拨
PS 本帖里面没看到

我在灌水"


搞不懂你们的东东
2007-11-19 16:10
0
雪    币: 93944
活跃值: (200219)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
11
YOU TRY AGAIN!
2007-11-19 16:10
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
12
sysenter ->msr.IA32_CS_EIP,希望我没打错
2007-11-19 16:17
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
对了!
有sysenter 寄存器啊!可以设置CS:IP的,哎,原来是这么的简单
2007-11-19 16:32
0
游客
登录 | 注册 方可回帖
返回
//