drzeissler hat geschrieben:Es sind cracktrs/intros die in der Regel mit esc abgebrochen werden können.
Oh, DEMOS... Naja.
Bekanntlich sind Demo-Coder, die, was Platzverbrauch UND Rechenpowerverbrauch angeht, bekanntlich die effizientesten. Die coden normalerweise "hart am limit" - vor allem bei DOS-Maschinen, wo alles über eine SingleCore-CPU geht (und keine 3D-Grafikkarten, keine GPU...) - d.h. WENN etwas extrem hardwarenah gebaut sind, sind es Treiber und Demos.
Wenn es Demos sind, die den Ticker extrem hoch setzen (das sind vor allem solche, die SoundAusgabe per PC-Speaker machen) müßte man da vorsichtig sein. (Obwohl man hier auch den zweiten Ticker benutzen könnte, den kaum einer benutzt, weil er etwas schwieriger anzusteuern und die Ticks nur in 2er Potenzen einstellbar sind.)
Desweiteren geht es natürlich um den Abbruch per ESC. Bei Demos gehe ich davon aus, daß meist NICHT der Tastaturpuffer abgefragt wird, um nach gedrückter ESC zu testen - sondern direkt Port $60. Das kann man so leider nicht simulieren.
Natürlich gäbe es noch eine andere Möglichkeit: In den Ticker einklinken, dann, wenn das Demo läuft, testen, ob INT8-Rücksprungadresse sich geändert hat - falls ja, dann wieder zurück tauschen - d.h. so, daß die eigene ISR für INT8 VOR der des Demos aufgerufen wird.
Außerdem herausfinden, auf welche Frequenz der Ticker gestellt wurde, damit man die richtige Laufzeit einstellen kann. Der Ticker erhält einen Timeout entsprechend der Zeit. Nach Ablauf des Timeouts wird die Rücksprungadresse und die FLAGS vom Stack geholt und der DOS-Int zum Beenden eines Programms aufgerufen (INT $21, Funktion $4C soweit ich mich erinnere).
ABER: Hier müssen noch 2 Dinge berücksichtigt werden:
1. Das Demo könnte nicht im RealMode/V86 Mode, sondern im ProtectedMode laufen - entsprechender Code muß dann eingebaut werden.
2. Der Systemzustand müßte dann selbstöndig wiederhergestellt werden (Grafiklkarte, Soundkarte usw. "zurücksetzen"), weil das Demo ja dann quasi nicht normal beendet ("heruntergefahren") wurde, sondern abgewürgt.
Prinzipiell, um so etwas zu bauen, braucht man quasi etwas ähnliches wie einen einfachen Taskmanager.
Wären es einfache alte Tools gewesen, die nicht so nah an der Hardware gebaut sind, da kann man sich normalerweise darauf verlassen, daß die ganzen "Außenherum-Spielereien" problemlos gehen, weil diese Tools meist nur die Standard-BIOS-Funktionen benutzen und das könnte man eher leicht umgehen.