HackShield同冰刃存在冲突
作者: MJ0011, 出处:BLOG, 责任编辑: 张帅,
2007-12-18 16:36
近日,安全研究人员MJ0011发现运行HackShield的游戏后,再运行冰刃,再切换回来,会出现蓝屏的情况,并做了详细分析,具体如下……
运行HackShield的游戏,再运行冰刃,再切换回来,会出现蓝屏的情况
问题是KERNEL_MODE_EXCEPTION_NOT_HANDLED,异常号是0x80000004(STATUS_SINGLE_STEP),引发错误的地址在hal的一个函数READ_PROT_UCHAR中.代码为:
| mov eax, eax mov edx , [esp+4] in al , dx ret 4 |
出现异常的地址在ret 4处
调用该函数的地址为i8042prt.sys中的i8042InterruptServiceRoutine,即键盘/鼠标中断的处理例程.
经过分析,出错当时DR7被enable,开启了读写断点,DR2的值是0x60,即是HackShield会在0x60号端口上下IO硬件断点.
而!idt -a 查看IDT,int 1 & int3号中断的处理例程都是在系统原始的KiTrap01 & KiTrap03上,所以当READ_PORT_UCHAR执行了in al ,dx 后,就会发生异常下来,而int 1 & 3中处理例程没有被修改,因此直接发生异常,BSOD了.
进一步查看原因,Icesword会不断重写int 1 & int3为系统原始的KiTrap*的地址,因此当HackShield修改了int 3的处理例程,然后设下硬件断点后,冰刃恢复了int 3的处理例程,一但再有键盘/鼠标的中断过来,触发了i8042中的处理例程调用hal中函数读写0x60号端口(键盘/鼠标的input/output buffer端口),就会被断下来,而int 3已经被恢复,因此宕掉。
- 本文关键词:

