Microsoft BASIC oder Microsort BASIK?

Moderator: Rockford

Antworten
Benutzeravatar
DjayBee
Beiträge: 129
Registriert: 17.08.2021 04:02
Has thanked: 50 times
Been thanked: 21 times
Kontaktdaten:

Microsoft BASIC oder Microsort BASIK?

Beitrag von DjayBee »

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:

BASIK.png
BASIK.png (8.43 KiB) 793 mal betrachtet

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.

Microsoft BASIC (1981)(Atari)(US)[!][cr CSS].atr
(90.02 KiB) 31-mal heruntergeladen

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.

Benutzeravatar
dl7ukk
Beiträge: 152
Registriert: 25.08.2021 23:03
Has thanked: 3 times
Been thanked: 20 times
Kontaktdaten:

Re: Microsoft BASIC oder Microsort BASIK?

Beitrag von dl7ukk »

.
Respekt, :!: :!: :!:

schöne Sache


dl7ukk

Benutzeravatar
luckybuck
Beiträge: 23
Registriert: 18.06.2021 23:01
Has thanked: 14 times
Been thanked: 3 times
Kontaktdaten:

Re: Microsoft BASIC oder Microsort BASIK?

Beitrag von luckybuck »

Super Find mal wieder! Danke Dir DjayBee!!!

Yep, auf der Hülle ist das auch tatsächlich so beschrieben! :-) Mit k ohne wenn und aber.

Vermutung: Eindeutschung der US-Version?
Schöne Grüße,
Luckybuck
Atari WIKI, Atarimania & Archive.org

Benutzeravatar
DjayBee
Beiträge: 129
Registriert: 17.08.2021 04:02
Has thanked: 50 times
Been thanked: 21 times
Kontaktdaten:

Re: Microsoft BASIC oder Microsort BASIK?

Beitrag von DjayBee »

luckybuck hat geschrieben:
16.01.2022 02:22
Yep, auf der Hülle ist das auch tatsächlich so beschrieben! :-) Mit k ohne wenn und aber.

Vermutung: Eindeutschung der US-Version?
Du hast mich missverstanden. Das von mir beschriebene Programm ist eine zweite Datei auf der Diskette, das im ursprünglichen Zustand überhaupt nicht läuft.
Erst nachdem ich den nicht funktionierenden Kopierschutz entfernt und danach noch eine sinnvolle Startadresse eingebaut habe, lief es.

Das ist definitiv ein vom Programmierer absichtlich hinterlassener Fake - vermutlich als falsche Fährte für Cracker.

Benutzeravatar
DjayBee
Beiträge: 129
Registriert: 17.08.2021 04:02
Has thanked: 50 times
Been thanked: 21 times
Kontaktdaten:

Re: Microsoft BASIC oder Microsort BASIK?

Beitrag von DjayBee »

Ich habe dann Kay Savetz gefragt, ob er jemanden interviewt hat, der mit dem Atari-Port von Microsoft Basic zu tun hatte.

Klar hat er: https://ataripodcast.libsyn.com/antic-i ... ct-manager

Tandy Trower war zuerst Product Manager für MS Basic bei Atari und hat dann die Seiten gewechselt und wurde Product Manager für den Atari-Port von MS Basic bei Microsoft.

Leider konnte er auch nicht viel beitragen und ist demselben Missverständnis aufgesessen,wie luckybuck:
"Not certain I can be of much help here. The fact both BASIC and Microsoft are misspelled makes me think this is either a bogus/fake version of BASIC which could have written in 6502 assembly code or even BASIC (either the original Shepherdson or Microsoft) so that it looks like BASIC but really isn’t, or perhaps a corrupted disk file (floppies we’re notorious for dropping bits over time). To determine which would like take trying to write a longer program of perhaps disassembling the file.

In any case this doesn’t look like anything I recall and I don’t recall the developer creating Easter eggs in pre-release copyright signatures for startup.

Finally, the developer who worked on Microsoft BASIC for Atari isn’t alive, so I couldn’t even ask him."
- und mittels DeepL in Deutsch -
"Ich bin mir nicht sicher, ob ich hier eine große Hilfe sein kann. Die Tatsache, dass sowohl BASIC als auch Microsoft falsch geschrieben sind, lässt mich vermuten, dass es sich entweder um eine gefälschte Version von BASIC handelt, die in 6502-Assemblercode oder sogar BASIC (entweder das originale Shepherdson oder Microsoft) geschrieben sein könnte, so dass es wie BASIC aussieht, es aber in Wirklichkeit nicht ist, oder vielleicht um eine beschädigte Disketten-Datei (Disketten sind berüchtigt dafür, dass sie mit der Zeit Bits verlieren). Um das herauszufinden, müsste man versuchen, ein längeres Programm zu schreiben oder vielleicht die Datei zu disassemblieren.

Auf jeden Fall sieht dies nicht nach etwas aus, an das ich mich erinnere, und ich kann mich nicht daran erinnern, dass der Entwickler Ostereier in Copyright-Signaturen vor der Veröffentlichung für den Start erstellt hat.

Schließlich ist der Entwickler, der an Microsoft BASIC für Atari gearbeitet hat, nicht mehr am Leben, also konnte ich ihn nicht einmal fragen."

Benutzeravatar
DjayBee
Beiträge: 129
Registriert: 17.08.2021 04:02
Has thanked: 50 times
Been thanked: 21 times
Kontaktdaten:

Re: Microsoft BASIC oder Microsort BASIK?

Beitrag von DjayBee »

Noch ein Posting um die Ähnlichkeit der beiden Binaries etwas plakativer zu zeigen:
diff-bin1.png
Der Screenshot stammt von einem binären Diff der beiden Dateien und zeigt einen Ausschnitt aus dem ersten Drittel.
Nur die rot hinterlegten Bytes unterscheiden sich.

Bis auf zwei Stellen sind alles 16-bit Adressen, deren Werte nur um 1-3 auseinander liegen.
Nur die beiden Stellen mit einer Schraffur ($193b und $196a) wurden im jeweils anderen Binary eingefügt.

Das ist für mich auch ein klarer Beweis, dass es kein nachträglicher Hack ist, sondern aus dem originalen - aber natürlich leicht veränderten - Quellcode assembliert wurde.

Benutzeravatar
DjayBee
Beiträge: 129
Registriert: 17.08.2021 04:02
Has thanked: 50 times
Been thanked: 21 times
Kontaktdaten:

Re: Microsoft BASIC oder Microsort BASIK?

Beitrag von DjayBee »

.
In den Screenshots befindet sich jeweils die "richtige" Version auf der rechten Seite und das Fake links.

Irrelevante Beispiele:
.
diff-error2.png
diff-error2.png (8.2 KiB) 745 mal betrachtet
.
diff-error1.png
diff-error1.png (15.11 KiB) 745 mal betrachtet

Auf den ersten Blick dachte ich, dass zwischen beiden Binaries mehr Unterschiede seien.
Etwas genaueres Hinschauen ergab dann aber, dass bei den obigen Beispielen nur mein Diff-Programm aus dem Takt geraten ist und die Änderungen tatsächlich wieder nur durch die Codeverschiebung um wenige Bytes entstanden sind.

Offenbar *) gibt es wirklich nur die nachfolgend sichtbaren fünf echten Unterschiede plus den Copyright Text.

msbasic-codediff.png
msbasic-codediff.png (48.89 KiB) 745 mal betrachtet

*) Ich habe nicht jede Zeile des Quellcodes exakt untersucht, sondern nur geschaut, ob die Unterschiede mehr sind, als nur die (meistens) letzte Ziffer der Adressen.


Die oben sichtbaren Änderungen deuten eher auf eine etwas ältere Version des Interpreters hin, der nachträglich mit dem nicht funktionierenden Kopierschutz, der sinnlosen Startadresse und vermutlich obigem NOP vermurkst wurde.
Der NOP bewirkt, dass sich das Programm beim Drücken von RESET aufhängt.

==

Für die Auswertung habe ich beide Programme in Altirra geladen, mittels Altirra den kompletten Speicher von $1E00-$69CF disassembliert und schlussendlich, um die Lesbarkeit zu verbessern, alle offensichtlichen nicht-Code Bereiche durch Hex-/ASCII-Dumps ersetzt.
Der "rote" Screenshot oben zeigt Auszüge aus diesen Dateien.

Microsoft BASIC.asm
(295.23 KiB) 23-mal heruntergeladen
Microsort BASIK.asm
(295.17 KiB) 24-mal heruntergeladen

Für das "Diffen" habe ich dann noch die Speicheradressen und Opcodes entfernt weil sich dann viel weniger textuelle Unterschiede ergeben. Die "gelben" Screenshots oben wurden mit diesen Dateien erstellt.

Microsoft BASIC-noopcodes.asm
(157.91 KiB) 21-mal heruntergeladen
Microsort BASIK-noopcodes.asm
(157.88 KiB) 23-mal heruntergeladen

Benutzeravatar
DjayBee
Beiträge: 129
Registriert: 17.08.2021 04:02
Has thanked: 50 times
Been thanked: 21 times
Kontaktdaten:

Re: Microsoft BASIC oder Microsort BASIK?

Beitrag von DjayBee »

DjayBee hat geschrieben:
15.01.2022 23:09
Eventuell hat ja ein Leser ein etwas größeres Programm, das auf dem Atari mit Microsoft BASIC läuft, und probiert es mal aus.
Kay Savetz hat mich auf "Instedit (Microsoft BASIC Version) v2.0" von APX hingeweisen.

Ich habe gerade eben mit meiner gepatchten XEX von Microsort BASIK erfolgreich einen Zeichensatz geladen, ein Zeichen geändert, die Datei wieder gespeichert und zur Kontrolle nochmal neu geladen.

Damit ist bewiesen, dass die Fake-Version auf etwas sinnvollem basiert und nur nachträglich und mit Absicht verhunzt wurde um das Fake zu erstellen.

Benutzeravatar
DjayBee
Beiträge: 129
Registriert: 17.08.2021 04:02
Has thanked: 50 times
Been thanked: 21 times
Kontaktdaten:

Re: Microsoft BASIC oder Microsort BASIK?

Beitrag von DjayBee »

Als ich gestern zum gefühlt fünfzigsten Mal die Copyrightmeldung der Fakeversion angeschaut habe, fiel mir zum ersten Mal auf, dass das noch schräger ist als gedacht.

800 ist nicht als Zahl, sondern als "acht großes-o großes-o" geschrieben.

Korrekt ist also

ATARI 8OO BASIK V2.7
(C) 1981 MICROSORT

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast