Wie überschreibt ein Modchip bestimmte Signale?

Ich habe kürzlich einen Artikel über das ursprüngliche PSX-Kopierschutzschema gelesen und darüber, wie die Modchips dieser Ära mit PIC-MCUs implementiert wurden. Dann tauchte diese Frage auf, und ich konnte weder im Netz noch unter Kollegen eine befriedigende Antwort finden.

Soweit ich weiß und auf YouTube-Videos gesehen habe, ist parallel zu den IC-Leitungen ein Modchip verbaut, der übersteuern will. Die spezifischen Leitungen, an denen der Modchip befestigt ist, werden natürlich bereits von einer anderen Komponente verwendet und sind nicht abgeschnitten. Folglich landen Sie in einer Situation, in der zwei verschiedene ICs versuchen, die gleichen Leitungen zu treiben.

In der CMOS-Logik ist das Signal entweder hoch (VDD) oder niedrig (GND). Das bedeutet, wenn der Modchip versucht, etwas zu injizieren oder der ursprüngliche IC versucht, mit der Zielkomponente zu sprechen, kann dies zu einem Kurzschluss oder einer Situation führen, in der beide Komponenten versuchen, diese Leitung hoch zu treiben.

Wie überschreibt also ein Modchip bestimmte Signale, indem er der Zielkomponente im Wesentlichen sagt: „Verwende meine Signale und nicht die Originale“?

Es treibt sie nur härter an als der Originalchip
@PlasmaHH Das ist bei einigen Modchips möglicherweise nicht der Fall. Ich weiß, dass es einige gibt, die hohe Spannungen oder Ströme in die Leitungen einspeisen, um das Herunterfahren anderer Geräte zu erzwingen (z. B. die übliche Art, den Famicom / NES-Sperrchip zu umgehen).

Antworten (1)

Das ist der clevere Teil von Modchips - sie verwenden im Allgemeinen eine oder eine Kombination mehrerer Techniken, um ihre beabsichtigte Funktion zu erreichen, ohne jemals versuchen zu müssen, ein CMOS-Logiksignal zu überschreiben. Aus genau den Gründen, die Sie in Ihrer Frage nennen.

Wenn es so einfach wäre, CMOS-Leitungen einfach zu überschreiben, wäre es völlig trivial, einen Modchip zu erstellen. Sie saugen einfach die Höhen auf und forcieren Tiefen, wann immer Sie wollen, und legen alles, was Sie wollen, nach Belieben auf jeden Stift oder Bus. Leider haben die meisten CMOS-Ausgänge entweder einen 50Ω- oder einen 25Ω-'Ein'-Widerstand, entweder gegen VCC sowie GND oder nur gegen GND (je nachdem, ob es sich um einen Open-Drain- oder Gegentaktausgang handelt oder nicht). Die PIC- und AVR-Mikrocontroller haben beispielsweise 25-Ω-Push-Pull-Ausgänge. Im Fall von PICs sind sie wirklich nur für maximal ±25 mA Senke oder Quelle an jedem Pin ausgelegt und haben wahrscheinlich einen ähnlichen Widerstand wie andere CMOS-Ausgangspins. Um eine der Leitungen zu überschreiben, müssten mehrere Pins parallel geschaltet werden. All dies sind Fehler, die die meisten CMOS-Chips haben könntentolerieren, wenn der Zustand kurz genug ist, aber es besteht keine Erwartung, dass der Chip so etwas überlebt, wenn es immer wieder auftritt. Wenn Sie die absoluten Höchstwerte überschreiten, betreten Sie ein Gebiet, in dem der Chip tatsächlich Schaden nehmen kann. Selbst wenn es einmal oder einige Male funktioniert, könnte es langsam eine Oxidschicht zerstören oder eine Injektion heißer Ladungsträger oder eine Vielzahl anderer Verschleißmechanismen verursachen, die schließlich zum Ausfall dieses IO-Pins führen.

Also, wie Boromir sagen könnte: „ Man überschreibt nicht einfach CMOS-Signale.

Die verwendeten Strategien sind in der Regel sehr spezifisch für die Funktionsweise des Kopierschutzes (oder was auch immer), und es kann oft viel Zeit dauern, bis Hacker eine Schwachstelle finden, die ausgenutzt werden kann und die ohne außer Kraft setzende Logiksignale funktioniert.

Reden wir über die PS1-Modchips. Der PS1-Kopierschutz funktionierte, indem er versuchte, eine kurze, 4-stellige Zeichenfolge aus dem innersten Abschnitt einer CD zu lesen, die in die Wobble-Groove eingebettet war , bekannt als Wobble-Code oder einfach Wobble-Groove-Daten . Dies sind im Grunde Verfolgungsinformationen - sie lassen einen CD-Lesekopf wissen, wo er sich auf der Disc befindet, eine konstante Winkelgeschwindigkeit aufrechterhalten und so etwas. Auf einer Musik-CD werden die Wobble-Groove-Daten normalerweise auf einem Unterkanal gelesen und enthalten die Zeitposition für diesen Bereich auf der CD. Hier wird die HH:MM:SS-Zeit auf einem CD-Player erzeugt - indem sie tatsächlich von der CD gelesen wird.

Der wichtige Punkt bei Wobble-Groove-Daten ist, dass diese nicht auf eine Disc „gebrannt“ werden konnten – sie waren in die physische Struktur der CD selbst eingebettet. In der Tat muss es bereits vorhanden sein, um überhaupt eine CD zu brennen, und wenn Sie CD-Rs kaufen, handelt es sich um Discs, auf denen bereits vorgefertigte Wobble-Groove-Daten vorhanden sind, sodass Ihr CD-Brenner weiß, wo er die Pits tatsächlich auf der Disc platzieren muss, wenn Sie sie verwenden verbrenne es. Mit anderen Worten, es musste in der eigentlichen Fabrik gepresst werden, in der die physischen CDs hergestellt wurden.

Scheint ein ziemlich idiotensicherer Kopierschutz zu sein, oder? Nun, es gab eine kritische Schwäche, und das war die Einfachheit des Schutzes in jeder Phase, die über das tatsächliche Lesen der physischen Medien hinausgeht.

Es gab ein paar verschiedene Strings, nach denen der Kopierschutz in diesen Wobble-Groove-Daten suchte, und sie entsprachen verschiedenen Regionen, was sowohl den Kopier- als auch den Regionsschutz in einem Mechanismus ermöglichte. Die Zeichenfolge war „SCEA“ für Region 1 (SCEA ist einfach ein Initialismus für Sony Computer Entertainment America). Es gab andere, wie SCEE (dasselbe, aber für Europa), aber solange der Laufwerkscontroller diese Zeichenfolge fand, würde die PS1 mit dem Booten der Festplatte fortfahren.

Die Wobble-Groove-Daten werden als serieller Bitstrom gestreamt, wenn eine Platte gelesen wird. Es hat eine viel geringere Dichte als die tatsächlich aufgezeichneten Daten auf der Festplatte, und im Fall der PS1 war es ein serieller Stream mit 250 bps. Ziemlich langsam, sogar langsamer als ein 300-Baud-Modem.

Noch wichtiger ist, dass es einen eigenen dedizierten Unterkanal hat, was bedeutet, dass es einen eigenen Bus und einen Satz digitaler Logikleitungen in der tatsächlichen Hardware hat. Dies war ein sehr typisches und standardmäßiges Setup, das mit (und zum größten Teil, glaube ich, immer noch) optischen Laufwerken verwendet wird. Es ist analog zu den Tracking-Daten auf einer VHS-Kassette.

Die Haupt-PS1-CPU empfing also diesen Bitstrom vom Plattenlaufwerk-Controller auf einem bestimmten Unterkanal – in diesem Fall Unterkanal Q – der seine eigene CLK- und DATA-Leitung hat. Praktischerweise war dies ein bidirektionaler Bus - die CPU verwendete auch dieselben CMOS-Leitungen, um dem Laufwerkschip mitzuteilen, aus welchem ​​​​Bereich der Platte die Unterkanaldaten gelesen werden sollten.

Wie führen Sie also eine Injektion durch, ohne einen dieser Chips überschreiben zu müssen?

Du betrügst.

Die frühesten Modchips verwendeten eine ziemlich brutale Methode. Sie manipulierten tatsächlich den Transistor, der den Laser direkt steuerte. Das ist noch nicht einmal eine digitale Lösung, es operierte auf dem einen analogen Teil dieser ganzen Sache.

Es hätte eine Verbindung zu einem Stift, der signalisiert, wann die CD-Laufwerkstür geschlossen wurde, und würde auf dieses Signal auslösen. Da jeder Transistor eine Art Reihenbasiswiderstand haben wird, war es eine sehr einfache Aufgabe, ihn zu manipulieren, ohne Kurzschlüsse oder hohe Ströme zu verursachen.

Und aus Sicherheitsgründen gab es einen mit dem Türsensor verbundenen „Dioden-Gating“-Transistor, der die Verbindung des CD-Controllers zu den Laserdioden vollständig unterbrach und sie abschaltete, um sicherzustellen, dass niemand versehentlich dem Laser ausgesetzt werden konnte, während die Tür geöffnet war war offen.

Der Mod-Chip nutzte dies also, um die Laserdiode auszuschalten, wenn sie normalerweise eingeschaltet sein sollte, wodurch der Controller nichts von diesen Wackeldaten der inneren Spur lesen konnte, und da kein Signal verstärkt wurde, konnte der Mod-Chip das Foto des Lesekopfs frei manipulieren Transistor direkt über einen digitalen Pin. Es würde den eigentlichen Sensor des CD-ROM-Laufwerks genau richtig wackeln, um den Kopierschutz-String auszulesen. Und an diesem Punkt, da Sie dies im Wesentlichen am tatsächlichen physischen analogen Endpunkt der gesamten Signalkette eingespeist haben, ist alles von diesem Punkt an völlig normal und nativ. Tatsächliche Daten werden tatsächlich vom CD-ROM-Laufwerkscontroller gesendet, und es sind die richtigen Daten für eine echte Sony PS1-Disc der richtigen Region.

Sobald dies erledigt ist, aktiviert der Modchip einfach den LED-Gate-Transistor wieder und der normale Betrieb wird fortgesetzt, als wäre nichts passiert.

Dies ist nur ein Weg. Eine andere Methode, die PS1-Mod-Chips verwendete, war rein digital und nutzte einfach Timings aus. Es würde die zuvor erwähnte serielle Q-Leitung des Subkanals schnüffeln, und ein hochohmiger Eingangsstift kann eine CMOS-Leitung schnüffeln, ohne dass der Betrieb wirklich gestört wird (zumindest normalerweise), also keine Sorge. Und wenn man bedenkt, wie langsam der Unterkanal q war, lag er gut innerhalb der Fähigkeiten eines einfachen 8-MHz-µC.

Er würde warten, bis die CPU die Kopierschutzdaten auf dem Unterkanal Q anfordert, dann ein wenig warten und den korrekten Bitstrom als gefälschte Antwort zurück an die CPU auf dem seriellen Bus des Unterkanals q einspeisen. Sicher, der Steuerchip des CD-Laufwerks war noch da, aber er war damit beschäftigt, den Lesekopf tatsächlich in Position zu bringen, die richtige Stelle auf der Platte zu finden und die Fehlerkorrektur zu erledigen. All diese Aufgaben dauern eine Ewigkeit in µC-Zeit. Verdammt, sie brauchen eine Weile in Menschenzeitskalen . Diese Modchips würden also das Timing ausnutzen, um einfach digitale Signale einzuspeisen, wenn sie sicher sein könnten, dass sie dort nichts anderes außer Kraft setzen MÜSSEN.

Wenn Sie neugierig sind, können Sie hier (Laserdioden-Gating) und hier (SUBQ-Injektion) genau sehen, wie diese beiden Methoden funktioniert haben .

Eine weitere Methode, die bei einer Vielzahl von Modchips beliebt ist, besteht darin, einen Reset auf einem Chip auszulösen - normalerweise der Haupt-CPU oder einer Art Controller-Chip oder beiden - und dies wiederum auf irgendeine Weise auszunutzen, um entweder als Betrüger eines Chips zu fungieren, während der andere vorübergehend deaktiviert wird, oder einfach um das Timing auf irgendeine Weise auszunutzen, die sich dadurch ergibt. Es ist eine sichere Wette, dass Sie nichts auf der RESET-Leitung eines Chips überschreiben müssen, da nichts ihm sagen wird, dass er (normalerweise) zurückgesetzt werden soll.

Und ich bin mir sicher, dass es noch Dutzende anderer cleverer Tricks gibt. Und es werden immer wieder neue von cleveren Hackern heraufbeschworen. Nicht im Namen der Piraterie, sondern einfach, um zu sehen, ob sie es können – und um zu erfahren, wie ein Gerät funktioniert. Ich denke, normalerweise haben die Leute, die es herausfinden, nur Spaß mit einem Puzzle. Zumindest würde ich es deshalb tun.

Das war sehr informativ, danke! Ich hatte PsNee- und MM3-Modchips sowie andere Ressourcen gefunden, aber ich hatte nicht genau herausgefunden, was sie taten. Wenn jemand mehr über PSX lesen möchte, ist hier ein guter Link: oldcrows.net/mcc3.html