INTRSPY:一个探索DOS奥秘的工具

Author: 罗文辉 Date: 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内容较长,故省略。(罗文辉)