INT9h 中断例程的安装

;**************************************
;程序运行平台

.MODEL TINY,STDCALL
;**************************************


;**************************************
;段说明
.CODE
   rt_shift EQU 01H
   ctrl_key EQU 04H
   alt_key EQU 08H
   del_key EQU 0D3H
   all   EQU 04h
   kybd_port EQU 60H
   ORG 100H
 start:
 jmp setup;
    ;内存驻留代码
 int9_handler proc far
    sti;允许硬件中断
    pushf;保存标志寄存器
    push es
    push ax
    push di
 
 ;ES: Di指向DOS键盘标志字节
 L1:
    mov ax,40h
    mov es,ax
    mov di,17h
    mov ah,es:[di];复制键盘标志到AH,417位置上是第一个键盘子http://blog.csdn.net/x86ipc/article/details/5303760
 
 ;测试Ctrl和Alt
 L2:
    test ah,ctrl_key;检测左边的Ctrl键是否按下    
    jnz L5;否则退出
    and ah,not ctrl_key
    mov es:[di],ah
    comment!
    test ah,alt_key;检测alt键是否按下
    jnz L5;否则退出
    ;测试
;测试Del和右shift
 L3:
    in al,kybd_port
    cmp al,del_key;
    jne L5;
    test ah,rt_shift
    jnz L5;
    !
L4:
    and ah,not ctrl_key;否 关闭Ctrl
    mov es:[di],ah
L5:
    pop di;
    pop ax
    pop es
    popf
    ;进行默认的中断处理
    jmp cs:[old_interrupt9];
    old_interrupt9 dword ?
    int9_handler endp
    end_ISR label BYTE
setup:
   ;保存orignal int9 中断
   mov ax,3509h
   int 21h
   mov word ptr old_interrupt9,bx
   mov word ptr old_interrupt9+2,es
   ;设置新的int9中断
   mov ax,2509h   
   mov dx,offset int9_handler
   int 21h    
   ;设置驻留程序
   mov ax,3100h   
   mov dx,offset end_ISR
   sub dx,cx
   mov cl,4
   ;shr dx,cl
   inc dx
   int 21h
end start;
参考文件:http://wenku.baidu.com/link?url=zzCaAYN75TBoS-wKHfkDJ7EKNuM5rzcrpp4rVpiA-8ls00V56uu-M5PujyzcgaUZcqRe72W9lLXZCVfZDWJvrC-2SauNzzGj1yTQVcHmKp7
          http://blog.csdn.net/x86ipc/article/details/5303760
实验环境:WIN7 旗舰版
实验结果:失败
分析,其实也可以算是成功了,经过测试在执行过TSR.COM的控制台中是成功的,并已经可以加以过滤,但是如果焦点移出该控制台,则过滤无效,是否是因为我们的程序,只读取了,改程序下
的内容???并不能截取全局的键盘操作内容,笔者自己认为,其实已经成功了,但是基于win7或者winxp下的控制台,也就是cmd命令后的开启的进程都只是一个虚拟机,并未真正进入我们当前系统的内存,经测试在该虚拟机下确实键盘中断被安装了,但是如何使用到当前系统中区,还有待于研究
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值