home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Best of Mecomp Multimedia 1
/
Mecomp-CD.iso
/
amiga
/
tools
/
utillities
/
setfunction
/
setfunction.dok
< prev
next >
Wrap
Text File
|
1996-07-12
|
5KB
|
87 lines
*****************************************************************
* *
* 'SetFunction' Manager © V 1.16 *
* *
* von Hans-Werner Schober *
* *
* 12 Jul. 1996 47798 Krefeld Ostwall 208 *
* *
* 100% Assembler Amiga 2000 GForce 68040 *
* *
*****************************************************************
Warum einen Manager ?
Der 'SetFunction'-Vector der exec.library ist wohl die einzige
Funktion auf dem Amiga die nicht multitaskfähig ist. Stellen
Sie sich vor das zwei Programme ein und den selben Vector einer
Library auf eine eigene Funktion verbiegen.
Beispiel:
Programm A verbiegt den Vector auf die Adresse 'x' und erhält
die Originaladresse 'o'.
Programm B verbiegt den selben Vector auf die Adresse 'y' und
erhält die Adresse 'x' zurück.
Sie beenden jetzt Programm A, dieses setzt den Vector zurück
auf die Originaladresse 'o'. Ist ja nicht weiter schlimm.
Jetzt beenden Sie Programm B, auch dieses setzt den Vector
zurück und zwar auf die Adresse 'x' die es erhalten hat.
Da diese Adresses von Programm A stammt und dieses bereits
beendet wurde, hat es auch den Speicher freigegeben wo diese
Funktion stand. Wenn jetzt dieser Vector der Library angesprun-
gen wird, grüßt mit Sicherheit der GURU.
Der 'SetFunction' Manager Übernimmt jetzt die Aufgabe diese
Adressen korrekt zu verwalten. Hierbei kann es durch unsauber
und nicht nach den Amiga Programmierrichtlinien, geschriebenen
Programmen zu Schwierigkeiten kommen.
Es darf zum Beispiel kein Programm selbst einen Vektor verbiegen,
es muß die Funktion 'SetFunction' der exec.library benutzen.
Es darf auch nicht erwarten das die Adresse als JMP-Adresse in
der Vectortabelle steht , die es der 'SetFunction'-Funktion
übergeben hat. Das heißt das der Programmierer es sich anders
merken muß ob er einen Vektor veändert hat z.B. durch einen
Message-Port.Durch dieses Fehlverhalten wird ein solches Programm
diesen Vektor immer wieder neu auf seine Funktion setzten und
seinen Patch nie entfernen.
Der SetFunction-Manager © V1.16 muß in Ihrer startup-sequence vor
dem 'SetPatch' Befehl aufgerufen werden. Auf Turbosystemen muß er
ebenfalls vor Befehlen aufgerufen werden die den Status der CPU
verändern, oder das FastRom einschalten.
Der Manager kann auch die Offsetnamen der einzelen Librarys
mit anzeigen insofern Sie das Programm 'AmigaLibHelp' installiert
haben, auch dieses Programm ist aus meiner Werkstatt.
Geplant ist eine Benutzeroberfläche als Commodities-Objekt und
eine Funktion, die es erlaubt einen Patch durch einen Requester
zu verhindern oder auch einen installierten Patch zu entfernen.
Duch einen Aufruf des Programmes mit der Option 'INFO',listet der
Manager alle bekannten Veränderungen. Unter angabe eines Library-
namens wird nur die Information zu dieser library gegeben.
Wollen Sie mir Ihre Erfahrungen, Kritik, Verbesserungsvorschläge
oder Bugreports mitteilen, dann schreiben Sie mir.
********************************** Viruserkennung *****************************
SetFunction läßt den Bildschirm beim ersten Aufruf einmal in der
Farbe grün aufblinken. Wenn ein Linkvirus 'FileGhost' oder 'Happy
New Year 96!' erkannt wird,wird er wieder inaktiv gemacht und der
Bildschirm blinkt in der Farbe gelb auf . Verändert irgendein
Programm den Vector 'LoadSeg' von der dos.library ohne hierfür
SetFunction der exec.library zu benutzen , so wird dieser sofort
wieder entfernt und der Bildschirm blitzt wieder gelb auf.
Wird die exec.library ohne SetFunction verändert so blinkt der
Bildschirm rot auf und der Patch wird zurückgesetzt.
Diesem Packet liegt ein kleines Prgramm dabei, welches die Link-
Viren 'FileGhost' und 'Happy New Year 96!' aus einem Programm
ausbauen kann.
Syntax KillVirus <filename>