Win9x下如何修改BIOS中断向量处理 ?
我想在 Windows9x 下实现"重载"BIOS中断,即先取得某中断向量处理的原入口地址,再编写一新函数,加入自已的处理,然后调用原处理。当该中断产生时,就会先调用我的处理,然后才进行原处理,也就是要实现标准C的 SetVector(中断号,新的处理函数)函数的功能。
这里有两个问题要解决,一是如何设置新的中断向量处理即如何实现SetVector;二是如何将函数的入口地址转换成物理地址以调用SetVector。
Windows9x可进入Ring0级,VC又可直接插入ASM代码,我想应该是可以实现的,望各位大侠鼎力相助。
问题点数:100、回复次数:5Top
1 楼strip(阿飞 - Mozilla●CSDN●痛)回复于 2002-03-20 09:06:24 得分 0
不觉得这个问题能够解决Top
2 楼DavidFan(anykey)回复于 2002-03-20 09:12:10 得分 50
网上有很多地方可下CIH的源代码,CIH源代码中,我记得好象是通过修改int 5进入ring0的,不过有一定的难度哦......Top
3 楼halcyon(让我们共同进步)回复于 2002-03-20 09:32:50 得分 50
同意UP,你要使用嵌入的汇编语言,特别是SIDT语句来中断向量表,其实代码不长,100行都不到吧。其实WINDOWS的很多功能都可以用钩子函数实现。Top
4 楼strip(阿飞 - Mozilla●CSDN●痛)回复于 2002-03-20 09:36:51 得分 0
CIH ???
那是9x下的vxd
不像dos下那么简单SetVector了Top
5 楼wmrwinhap(三棱镜)回复于 2002-03-22 16:57:07 得分 0
to halcyon:
我最想截获的中断是鼠标中断,加入自已的判断并在适当时候禁止鼠标移动与点击。
Windows9x的鼠标钩子太上层了,不象NT有 WH_MOUSE_LL 这种底层钩子,万般无奈,只好从底层动手了。
的确是要通过汇编指令SIDT读取中断向量表,还得在系统内存分配空间,将新的处理函数copy到系统内存区以保证其它进程产生中断时不死机……
你能帮我写写这个功能吗?我汇编基础太差,这个功能对我来说太复杂。分数不够再开窗口加一百两百分都可以的,在此多谢了!
Top




