INTRSPY:一个探索DOS奥秘的工具 罗文辉 1994-08-12 用过Turbo Debugger、DEBUG、SYMDEB的程序员都知道,这些程序都是通过用户驱动键盘来完成的,而INTRSPY是一个完全不同的程序,它依赖描述语言来说明要截获哪些中断,它既是事件驱动,又是描述驱动。其最大优点是不限制操作范围。如果你要监视DOS的BIOS的某个功能,只要你在描述语言中进行描述,就能达到目的,而且通过报告文件就能很容易理解这些细节。 下面我们来看INTRSPY是如何工作的: INTRSPY由两个文件组成,即INTRSPY和CMDSPY组成,他们都是以EXE为后缀的可执行文件,其中INTRSPY是一个常驻内存的软件,首先必须运行它,然后通过CMDSPY来编译描述语言,并通知INTRSPY根据描述文件截获中断并储存结果。下面是一个具体运用的例子,其文件名为KEY.SCR,该程序的功能是截获INT 40H的02号读盘功能。 附key.scr程序清单: structure param blk fields  para(byle,ptr)  code(byte,ptr) env_seg(word,hex)  args(dword,ptr);===>INT 40H &INT 13H功能读盘intercept 40h function 2on entry output"<---------INT 40H 02号功能读盘内容提要--------->" output" " output"所读扇区数"al "驱动器为"dl "第"dh "面"cl "扇"ch "磁道" on exit if (cflag==1)output "读盘后的代码是"ax output "读盘参数是:"(0∶78h->param blk.para->byte,dump,12) ;记录INT IE指向的磁盘基数表的数据 output "CS∶TP=>" (cs:ip[-10]->word,ptr) ;记录调用磁盘中断的程序调用点output "程序代码是:"(cs:ip[-10]->param blk.code->byte,dump,512) ;记录程序调用点附近的程序 output "数据读到"ES ":" BX ;记录程序读取磁盘数据的存贮的地址 output "读出的数据是:" ;以下记录的是从磁盘上读出的数据(指纹数据) (es:bx->byte,hex,512)程序运行步骤: ①intrspy -r2400 -i256 ②cmdspy compile dey.scr ③cmdspy report list整个详细内容都记录在list文件中,由于list内容较长,故省略。(罗文辉)