Wenn Interrupts im Real-Modus ausgelöst werden, überträgt die CPU die Ausführung an den Handler für diesen Interrupt, der in Interrupt Vector Table angegeben ist.
Um einen Interrupt in diesem Kontext einzubinden, bedeutet dies, dass die Adresse unter dem Eintrag 19h
in der Interrupt-Vektortabelle auf eine andere Adresse ihrer Wahl verweist. Wenn dann der Interrupt 19h
ausgelöst wird, würde er seine eigene Routine ab dieser Adresse ausführen, die wahrscheinlich auch die Steuerung zurück an den ursprünglichen Interrupt-Handler 19h
zurückgeben würde, bevor er zurückkehrt.
Angenommen, der Interrupt-Handler befindet sich im RAM, ein weiterer Ansatz zum Hooking wäre, einen Inline-Hook innerhalb des Handlers für den Interrupt 19h
zu platzieren. Das heißt, man könnte die Adresse des Interrupt-Handlers in Ruhe lassen, aber eine der Anweisungen im Handler durch eine jmp
(oder call
) eigene Routine ersetzen. Es ist in diesem Zusammenhang unklar, ob sie diese Art des Einhaken auch überwachen.
Edit: Nach dem durch das Dokument Skimming, scheint es, dass die erste Art von Haken ist, was sie redeten.
... Wenn das IPL Gerät an das System-BIOS bekannt ist, dann sicherzustellen, dass Interrupt 19h noch durch den System-BIOS gesteuert wird. Wenn nicht, wieder einzufangen Interrupt 19h und speichern Sie den Vektor ...
... Wenn das Betriebssystem und eine vorherige ISA Option ROM Steuerung des Vektors Interrupt 19h musste geladen werden kann, dann den Interrupt 19h wiederherstellen Vektor mit dem ISA-Option ROM und erneut ausführen der Interrupt 19h Bootstraploader ...
Also, im Grunde zu einem bestimmten Teil des Boot-Prozesses, überprüfen sie, ob eine Option ROM sehen geändert hat den Handler für Unterbrechung 19h
. Wenn sie geändert wird, speichern sie die Adresse des neuen Handlers (den sie möglicherweise später ausführen) und setzen den ursprünglichen Handler wieder in den IVT.