首页
社区
课程
招聘
[讨论]WinDBG好像有这样一个bug
2008-12-8 00:10 4176

[讨论]WinDBG好像有这样一个bug

2008-12-8 00:10
4176
WinDBG好像有这样一个bug:
找个IDT中的中断处理程序,在入口处下个断点,触发异常,WinDBG就断下来了,根据中断门的原理,这时只有CS,EIP,TF,IF,SS,ESP会发生变化,其它的寄存器应该不变。但WinDBG自做主张把FS寄存器改成了30h,看看除0异常:
nt!KiTrap00:
8053f19c 6a00            push    0
8053f19e 66c74424020000  mov     word ptr [esp+2],0
8053f1a5 55              push    ebp
8053f1a6 53              push    ebx
8053f1a7 56              push    esi
8053f1a8 57              push    edi
8053f1a9 0fa0            push    fs
8053f1ab bb30000000      mov     ebx,30h
8053f1b0 668ee3          mov     fs,bx

8053f1b3 648b1d00000000  mov     ebx,dword ptr fs:[0]
8053f1ba 53              push    ebx

红色代码说明了,因该是操作系统把fs置成30h的!
更要命的是我们还没法手工改变FS(改回去又被改回来),这样如果在iret的时候FS还是30h,那么iret之后返回到ring3,FS将被CPU置0(因为30h这个选择子是ring0的),导致后面的函数执行出错(没法注册异常了),而且程序被无声无息的终止!!我在VMWare上测试的,大家看看有没有这个BUG……
调试rootkit ring3进ring0之门系列[二] -- 中断门  就可以说明这个问题

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

收藏
点赞0
打赏
分享
最新回复 (2)
雪    币: 331
活跃值: (57)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
better 2 2008-12-8 11:40
2
0
晕,难道都不知道
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
十七 2008-12-8 11:54
3
0
确实 在mj的论坛看到了
游客
登录 | 注册 方可回帖
返回