Startseite   |  Site map   |  A-Z artikel   |  Artikel einreichen   |   Kontakt   |  
   
  •  
    Biologie
    Themen der Chemie
    Deutsch online artikel
    Englisch / Englische
    Franzosisch
    Geographie
    Geschichte
    Informatik
    Kunst
    Mathematik / Studium
    Musik
    Philosophie
    Physik
    Recht
    Sport
    Wirtschaft & Technik



    Biographie

    Impressum

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
Wozu PGP
Vorübergehende Verbindungen
Programmaufbau
Wie setzt sich ICANN zusammen ?
Asynchrone Übertragung
Fremd-Schnittstellen
Mailing Listen
Grundlagen zur Digitaltechnik
The Internet - What is it?
Das Benutzerkonzept von Windows NT





Datenschutz

Zum selben thema
Netzwerk
Software
Entwicklung
Windows
Programm
Unix
Games
Sicherheit
Disk
Technologie
Bildung
Mp3
Cd
Suche
Grafik
Zahlung
Html
Internet
Hardware
Cpu
Firewall
Speicher
Mail
Banking
Video
Hacker
Design
Sprache
Dvd
Drucker
Elektronisches
Geschichte
Fehler
Website
Linux
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.