功能非凡的TSR—内存驻留程序

Author: 山东 赵博 Date: 1994-11-18

        1.终止进程并保持驻留(ITN21H功能31H)
        2.设置中断向量地址(INT21H功能25H)
        3.获取中断向量地址(INT21H功能35H)
        TSR功能从表面上看与正常的DOS终止进程功能(INT21H功能4CH)相同,即对其调用时,它将终止正在执行的程序,所不同的是,程序所占用内存空间并不释放,相反,一部分或全部程序初始分配的内存空间将被保护起来,不会被以后调入的程序覆盖掉。实际上有人把TSR程序起名为MEMHOG或EATMEM,因为它可以使一台拥有640K内存的计算机在进行内存检查时与一台有512KB的计算机没有什么区别,这种“挂起”内存空间方法的优点是这部分空间完全在你的控制之外。
        现在来看第二个重要功能,设置中断向量。所有基于INTEL8086体系结构的计算机,都允许任何一个已装入的程序在任何时候可被硬件或软件中断所调用。例如,调用INT21H就可以获得MS-DOS服务功能的原因是,INT21H的中断向量指向DOS内部提供此种服务的代码。在一个中断向量下挂起一串代码的能力有时会使TSR功能紧凑地占用内存空间。可以利用设置中断向量的功能,使中断向量指向特定指令代码,然后调用TSR功能使进程终止后,这部分代码以及相应的数据及堆栈被驻留在内存中。任何时候,一旦调用此中断,挂起的代码将被激活,执行其相应功能。
        最后一个功能是获取中断向量,TSR最感兴趣的便是硬件中断INT9,当用户按动键盘上的任意一个键时,都将产生这一中断,通过捕获INT9,一个TSR程序可以了解用户按下的每一个键。并设定响应哪一个键,也即我们常说的热键,如VSAFE中的激活热键默认为ALT-V。
        正是由于TSR程序具有以上三个功能,使它能为用户提供动态便捷的服务,但同时也给计算机病毒以可乘之机,许多病毒就是一段TSR程序常驻内存,监视用户程序,伺机发作。
        从驻留程序的特点和功能可以看到驻留在内存空间的TSR程序最好是实用性和通用性都很强的工具性程序,对于只提供用户某种最后结果或数据的软件,将其驻留内存是不可取的。(山东 赵博)