Microsoft BASIC oder Microsort BASIK?
Verfasst: 15.01.2022 23:09
Vor ein paar Tagen hat @AGiambra einen Post auf Atari Age verfasst, dass er bei Microsoft Basic für den Atari einen interessanten Kopierschutz gefunden habe.
https://atariage.com/forums/topic/32944 ... rotection/
Die Diskette hat ein zweites Directory in Sektor $179, das beim Booten aktiv ist und aus dem das Basic als AUTORUN.SYS geladen wird. Während der Initialisierung des Programms wird das DOS dann gepatcht, dass wieder das normale Directory verwendet wird.
Ich war zwar zuerst etwas irritiert weil ich wusste, dass Microsoft Basic als Kopierschutz fehlende Sektoren nutzt (364 und 380), habe das Image aber dann doch untersucht.
Es zeigte sich, dass auf der Disk tatsächlich zwei nahezu identische Kopien des BASIC vorhanden sind. Die Version im offiziellen Directory ist aber ein Fake und erwartet Sektor 720 als fehlend um danach dann trotzdem mit einem Warmstart abzubrechen.
Im Debugger stellte sich dann heraus, dass auch Sektor 361 fehlen muss, was aber nicht zutrifft. 361 ist schließlich der erste Sektor des Directorys und deshalb in Ordnung.
Nachdem ich den Kopierschutz gecrackt hatte, lief das Programm aber immer noch nicht, sondern führte weiterhin einen Warmstart aus.
Das war im Nachhinein auch nicht verwunderlich weil als Startadresse in INITAD ($2e2) der Warmstartvektor $e474 hinterlegt ist.
Sehr seltsam!
Ich hatte ja breits vorher herausgefunden, dass beide Programme nahezu identisch sind und in ihren RAM-Adressen nur um 0-3 Byte verschieden sind. Also nachgeschaut, wohin INITAD beim richtigen Basic zeigt ($6851) und um diese Adresse herum in der Fakeversion gesucht. Bingo, an $684e befindet sich identischer Code.
Nachdem ich die INITAD der Fakeversion auf $684e gesetzt hatte, erhielt ich folgende Ausgabe:
Der Zweizeiler war nur ein Test, ob der Interpreter irgend etwas sinnvolles tut.
Er war, wie man sieht, erfolgreich. Weitere Tests habe ich bisher damit noch nicht gemacht.
Eventuell hat ja ein Leser ein etwas größeres Programm, das auf dem Atari mit Microsoft BASIC läuft, und probiert es mal aus.
Nein, ich habe die Systemmeldung "ATARI 800 BASIK V2.7 (C) 1981 MICROSORT" nicht in das Programm gepatcht. Das steht genau so auf der Originaldiskette, die Atari geliefert hat.
Die Grundlage für meine Untersuchung ist das verifizierte(!) Image von a8preservation.com.
Falls jemand damit rumspielen möchte, hier mein Crack der Diskette.
Um die Fakeversion zu starten, die Diskette ins (richtige) Basic booten und dann ins DOS gehen. Danach manuell das Fake AUTORUN.SYS aufrufen.
Ich versuche derweil noch herauszufinden, wo genau die Unterschiede der beiden Versionen liegen und die Verschiebung des Codes um wenige Byte im RAM herkommt.
https://atariage.com/forums/topic/32944 ... rotection/
Die Diskette hat ein zweites Directory in Sektor $179, das beim Booten aktiv ist und aus dem das Basic als AUTORUN.SYS geladen wird. Während der Initialisierung des Programms wird das DOS dann gepatcht, dass wieder das normale Directory verwendet wird.
Ich war zwar zuerst etwas irritiert weil ich wusste, dass Microsoft Basic als Kopierschutz fehlende Sektoren nutzt (364 und 380), habe das Image aber dann doch untersucht.
Es zeigte sich, dass auf der Disk tatsächlich zwei nahezu identische Kopien des BASIC vorhanden sind. Die Version im offiziellen Directory ist aber ein Fake und erwartet Sektor 720 als fehlend um danach dann trotzdem mit einem Warmstart abzubrechen.
Im Debugger stellte sich dann heraus, dass auch Sektor 361 fehlen muss, was aber nicht zutrifft. 361 ist schließlich der erste Sektor des Directorys und deshalb in Ordnung.
Nachdem ich den Kopierschutz gecrackt hatte, lief das Programm aber immer noch nicht, sondern führte weiterhin einen Warmstart aus.
Das war im Nachhinein auch nicht verwunderlich weil als Startadresse in INITAD ($2e2) der Warmstartvektor $e474 hinterlegt ist.
Sehr seltsam!
Ich hatte ja breits vorher herausgefunden, dass beide Programme nahezu identisch sind und in ihren RAM-Adressen nur um 0-3 Byte verschieden sind. Also nachgeschaut, wohin INITAD beim richtigen Basic zeigt ($6851) und um diese Adresse herum in der Fakeversion gesucht. Bingo, an $684e befindet sich identischer Code.
Nachdem ich die INITAD der Fakeversion auf $684e gesetzt hatte, erhielt ich folgende Ausgabe:
Der Zweizeiler war nur ein Test, ob der Interpreter irgend etwas sinnvolles tut.
Er war, wie man sieht, erfolgreich. Weitere Tests habe ich bisher damit noch nicht gemacht.
Eventuell hat ja ein Leser ein etwas größeres Programm, das auf dem Atari mit Microsoft BASIC läuft, und probiert es mal aus.
Nein, ich habe die Systemmeldung "ATARI 800 BASIK V2.7 (C) 1981 MICROSORT" nicht in das Programm gepatcht. Das steht genau so auf der Originaldiskette, die Atari geliefert hat.
Die Grundlage für meine Untersuchung ist das verifizierte(!) Image von a8preservation.com.
Falls jemand damit rumspielen möchte, hier mein Crack der Diskette.
Um die Fakeversion zu starten, die Diskette ins (richtige) Basic booten und dann ins DOS gehen. Danach manuell das Fake AUTORUN.SYS aufrufen.
Ich versuche derweil noch herauszufinden, wo genau die Unterschiede der beiden Versionen liegen und die Verschiebung des Codes um wenige Byte im RAM herkommt.