Startseite   |  Site map   |  A-Z artikel   |  Artikel einreichen   |   Kontakt   |  
  


informatik artikel (Interpretation und charakterisierung)

Unix

Die aktivierung von tsr-programmen


1. Java
2. Viren

Wenn wir an ein TSR-Programm die Forderung stellen, unmittelbar nach Betätigung seines ganz persönlichen Hotkeys in den Vordergrund zu rücken, müssen wir natürlich eine Art Auslösemechanismus installieren, der mit der Tastatur verbunden ist. Hier bieten sich die Interrupts 09h und 16h an, die beide im Zusammenhang mit der Tastatur aufgerufen werden. Interrupt 16h ist der bekannte BIOS-Tastatur-Interrupt, der Programmen zur Abfrage der Zeichen und des Tastaturstatus dient. Sich in diesen Interrupt einzuklinken und ihn im Hinblick auf die Aktivierung des TSR \"umzubauen\", führt jedoch nicht zu dem gewünschten Erfolg. Denn dadurch kann das TSR-Programm nur aktiviert werden, wenn dieser Interrupt durch ein Programm zur Tastaturabfrage aufgerufen wird. Schließlich erhält das TSR-Programm erst dann die Möglichkeit, den Inhalt des Tastaturpuffers zu betrachten und sich in den Vordergrund zu rücken, wenn es darin seinen Hotkey entdeckt.

Besser eignet sich deshalb der Interrupt 09h, der von der Tastatur mit jeder Betätigung einer Taste ausgelöst wird. Es gilt also diesen Interrupt auf eine eigene Routine umzuleiten, die dann bei jedem Tastenanschlag überprüfen kann, ob das TSR-Programm aktiviert werden soll oder nicht. Bevor dies geschieht, sollte die Routine jedoch den Interrupt-Handler aufrufen, der vor der Installation des TSR-Programms für den Interrupt 09h zuständig war. Dafür gibt es zwei wichtige Gründe. Der erste hängt mit der Aufgabe diese Interrupts zusammen. Er soll dem System anzeigen, daß die Tastatur die Aufmerksamkeit des Systems benötigt, um Informationen über die Betätigung oder das Loslassen einer Taste an das System zu übertragen. Konkret heißt das, wenn nicht zunächst die ursprüngliche Routine aufgerufen wird, wären keine Eingaben von der Tastatur mehr möglich.

Der zweite Grund hängt mit der Möglichkeit zusammen, daß vor einem TSR-Programm bereits andere TSR-Programme installiert wurden, die den Interrupt 09h auf eine eigene Routine umgeleitet haben. Da sich das zuletzt gestartete TSR-Programm in der Kette der Interrupt-Handler vor diesen Programmen befindet, werden ihrer Interrupt-Routinen nicht mehr aufgerufen, wenn man auf einen Aufruf des alten Interrupt-Handlers verzichtet. Die Folge: Diese TSR-Programme können nicht mehr aktiviert werden

Aus diesem Grund gilt für TSR-Programme, daß beim Aufruf von umgeleiteten Interrupt-Routinen vor oder nach der eigenen Interrupt-Abarbeitung der alte Interrupt-Handler aufgerufen werden sollte. Dieser Aufruf darf dabei jedoch nicht über den Maschinensprachebefehl INT erfolgen, da dadurch womöglich doch wieder nur der letzte Interrupt-Handler aufgerufen würde, der zusammen mit einem TSR-Programm installiert wurde. Dies hätte in den meisten Fällen eine unendliche Rekursion und damit verbunden einen Stacküberlauf zur Folge, was fast zwangsläufig zu einem Absturz des Systems führt. Um dem entgegenzuwirken, muß die Adresse des alten Interrupt-Handlers bei der Installation des TSR-Programms in Erfahrung gebracht und in einer Variablen gespeichert werden. Über diese Adresse kann der alte Interrupt-Handler dann mit Hilfe eines FAR-CALL-Befehls aufgerufen werden. Um jedoch den Aufruf dieses Handlers über den INT-Befehl zu simulieren, muß zuvor der Inhalt des Flag-Registers mittels PUSHF auf den Stack gebracht werden, wie es automatisch beim INT-Befehl geschieht.

Bevor der alte Interrupt-Handler innerhalb des neuen Interrupt-Handlers aufgerufen wird, wird zunächst einmal der Inhalt des Ports 60h ausgelesen. Das ist der Port, an den die Tastatur jeweils den Scan-Code der betätigten Taste anlegt. Auch der später aufgerufene alte Interrupt-Handler wird diesen Port auslesen, was das Programm allerdings nicht beeinträchtigt, weil der Port immer den gleichen Wert zurückliefert, bis eine neue Taste betätigt wurde. Mit dem Inhalt des Tastatur-Ports 60h kann der neue Interrupt-Handler des TSR-Programms feststellen, ob der Anwender einen Teil des Hotkeys betätigt hat, denn ein Hotkey setzt sich in der Regel aus einer Buchstaben- oder Ziffern-Taste in Verbindung mit einer oder mehreren Umschalttasten ([Shift], [Ctrl], [Alt] etc.) zusammen. Trifft der Interrupt-Handler auf den Code der Buchstaben- oder Zifferntasten, muß noch sichergestellt werden, daß der Anwender auch gleichzeitig die Umschalttasten niedergedrückt hält, die zum Hotkey gehören. Deshalb wird der Inhalt des BIOS-Tastatur-Flags inspiziert, das an der Adresse 17h innerhalb des BIOS-Variablensegments (Segmentadresse 0040h) zu finden ist. Die verschiedenen Umschalttasten werden dabei durch jeweils ein Bit repräsentiert. Trifft man dort auf die gewünschte Bit-Maske, versucht der Anwender gerade, das TSR-Programm zu aktivieren. Das TSR-Programm darf sich in diesem Fall aber nicht unter allen Umständen aktivieren, denn dem stehen verschiedene Probleme gegenüber, die unter dem Stichwort \"DOS-Reentranz\" zusammengefaßt werden.

 
 

Datenschutz
Top Themen / Analyse
indicator Wozu PGP
indicator Vorübergehende Verbindungen
indicator Programmaufbau
indicator Wie setzt sich ICANN zusammen ?
indicator Asynchrone Übertragung
indicator Fremd-Schnittstellen
indicator Mailing Listen
indicator Grundlagen zur Digitaltechnik
indicator The Internet - What is it?
indicator Das Benutzerkonzept von Windows NT


Datenschutz
Zum selben thema
icon Netzwerk
icon Software
icon Entwicklung
icon Windows
icon Programm
icon Unix
icon Games
icon Sicherheit
icon Disk
icon Technologie
icon Bildung
icon Mp3
icon Cd
icon Suche
icon Grafik
icon Zahlung
icon Html
icon Internet
icon Hardware
icon Cpu
icon Firewall
icon Speicher
icon Mail
icon Banking
icon Video
icon Hacker
icon Design
icon Sprache
icon Dvd
icon Drucker
icon Elektronisches
icon Geschichte
icon Fehler
icon Website
icon Linux
icon Computer
A-Z informatik artikel:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z #

Copyright © 2008 - : ARTIKEL32 | Alle rechte vorbehalten.
Vervielfältigung im Ganzen oder teilweise das Material auf dieser Website gegen das Urheberrecht und wird bestraft, nach dem Gesetz.
dsolution