Ich habe kürzlich einen Artikel über clevere Methoden gelesen, mit denen Programmierer ihre Spiele vor Piraten schützen, wie etwa die Entwickler von Game Dev Tycoon . Das hat mich neugierig gemacht: Wie stellen sie fest, dass es sich bei der Kopie des laufenden Spiels tatsächlich um eine Raubkopie handelt? Die naheliegendste Antwort, die ich durch Recherchen finden konnte, war, wie SNES-Kassetten feststellen können, ob sie Raubkopien enthalten , aber diese Taktik gilt offensichtlich nicht für PCs.
27
Antworten:
Das Wichtigste zuerst: Ein Computer kann nicht wissen, ob eine Datei raubkopiert wurde oder nicht. Piraterie ist ein juristischer / moralischer Begriff und hat daher keine Bedeutung in einer Datei, die nur aus Einsen und Nullen besteht.
Allerdings konzentrieren sich Piraterieprävention und Gegenmaßnahmen in der Regel darauf, herauszufinden, ob ein Benutzer etwas (normalerweise ein Objekt) hat, das nur erhältlich ist, wenn eine Kopie des Spiels gekauft wurde, und machen es schwierig, dieses zu duplizieren. Hierfür gibt es unzählige Möglichkeiten, von denen jede sowohl Vorteile als auch Mängel aufweist. Ich werde einige erwähnen:
In frühen Spielen wurden die Benutzer gebeten, ein Wort aus dem Spielhandbuch einzugeben, das Sie nur erhalten sollten, wenn Sie eine Spielebox gekauft haben. Ein Fotokopierer oder ein Scanner können diese Technik jedoch leicht umgehen.
In jüngerer Zeit sind Medienprüfungen häufiger. Damit das Spiel ausgeführt werden kann, muss sich die Spiel-CD im Laufwerk befinden. Um dies zu implementieren, können Sie beispielsweise auf wichtige Datendateien von der CD zugreifen, ohne die das Spiel nicht ausgeführt werden kann, oder einfach überprüfen, ob eine Datei auf der CD vorhanden ist. Dies funktionierte recht gut, wenn CDs schwer zu duplizieren waren, aber CD-Kopierer und neuere Laufwerkemulatoren können verwendet werden, um diese Technik einfach zu umgehen.
CD-Kopien sind jedoch nicht perfekt, daher konzentrieren sich viele andere Techniken darauf, zu erkennen, ob es sich bei der CD um die gepresste Original-CD oder um eine Kopie handelt. Um dies zu implementieren, kann ein Spiel auf Nicht-Standard-Elemente prüfen, die während der Druckzeit auf der Spiel-CD eingelegt sind, die jedoch von einem CD-Brenner auf einer CD-R nicht einfach und zuverlässig repliziert werden können. Einige gebräuchliche Wege, dies zu tun, sind:
Erstellen von Dummy- "Ghost" -Dateien auf der CD während des Masterings, auf die über das CD-Dateisystem nicht zugegriffen werden kann, die jedoch vorhanden sind, und die gelesen werden können, wenn Sie wissen, wo Sie sie finden. Diese Daten fehlen bei dateiweisen Kopien. Durch Kopieren des gesamten Disc-Images werden diese Dateien jedoch kopiert.
Eine andere Möglichkeit besteht darin, absichtlich Fehler in die Disc einzufügen. CDs enthalten Fehlerkorrekturcodes. Durch Einfügen von Fehlern in die Daten, die von einem Disc-Reader transparent korrigiert werden können, funktioniert die Disc normal, die Fehler werden jedoch nicht auf die CD-R kopiert. Wenn ein Spiel nach diesen absichtlichen Fehlern sucht, kann es eine CD als eine gepresste Originalkopie betrachten. RAW-Disc-Image-Kopien machen dies jedoch zunichte.
Das Einfügen von Zwillingssektoren mit derselben Adresse, aber unterschiedlichen Daten führt zu unterschiedlichen Ergebnissen, wenn Daten vorwärts und rückwärts gesucht werden. Es ist möglich, dies zu überprüfen, und das Duplizieren einer CD mit diesen Zwillingssektoren ist sehr schwierig.
Messung der tatsächlichen Position der Pits auf der CD. Wiederum ist das Duplizieren einer CD mit den Pits an den gleichen Positionen sehr schwierig.
Viele CD-Emulatoren wie Daemon Tools oder Alcohol 120% können diese Funktionen jedoch tatsächlich emulieren. Aus diesem Grund entscheiden sich viele Publisher für einen Schritt zur Erkennung von CD-Emulatoren und verhindern, dass das Spiel ausgeführt wird, wenn ein Emulator erkannt wird. Die Implementierung eines Emulatordetektors liegt jedoch außerhalb des Rahmens dieser Antwort.
Anstelle von oder zusätzlich zur Suche nach einer physischen CD kann ein Spiel den Benutzer auffordern, einige Daten wie einen Produktschlüssel einzugeben . Einige Möglichkeiten zur Verwendung von Produktschlüsseln sind:
Überprüfen des Schlüssels auf mathematische Merkmale. Dies verhindert jedoch nicht das Duplizieren von Schlüsseln, und wenn der Überprüfungsalgorithmus entdeckt oder rückentwickelt wird, kann ein Pirat möglicherweise nach Belieben neue Schlüssel erstellen, die für das Spiel als legitim erscheinen. Software, die nach Belieben Schlüssel erzeugt, heißt " keygens ".
Wenn Sie einen Hash basierend auf der Hardware des Benutzers generieren, senden Sie diesen Hash und den Produktschlüssel (normalerweise eine Kombination, die als "Installationsschlüssel" bezeichnet wird) an einen Server der Spielefirma. Erstellen Sie anhand des Hashs und der Seriennummer einen Aktivierungsschlüssel . Bei Verwendung von numerischen Einwegmethoden (wie z. B. modulare Arithmetik oder einige Methoden mit elliptischen Kurven) kann ein Spiel feststellen, ob der Aktivierungsschlüssel mit dem Hash und dem Seriencode übereinstimmt, und nur ausgeführt werden, wenn sie übereinstimmen. Diese Technik wird "Aktivierung" genannt.
Bei der Aktivierung kann ein Server die Bereitstellung von Aktivierungsschlüsseln für mehrere Hardware-Hashes mit demselben Seriencode verweigern. Selbst wenn der Seriencode und der Aktivierungsschlüssel kopiert werden, stimmt der Aktivierungsschlüssel aus diesem Grund nicht überein und das Spiel kann nicht auf anderen Computern ausgeführt werden.
Mit all diesen Maßnahmen soll festgestellt werden, ob der Benutzer eine gekaufte Kopie des Spiels besitzt oder nicht. Die Implementierung erfordert jedoch Programmcode, der dies überprüft. Es ist möglich, dass ein Pirat den Spielcode ändert, um die Prüfungen zu deaktivieren oder zu umgehen, anstatt die Kopierschutzmechanismen selbst anzugreifen. Das Ändern von Spiel-Binärdateien zum Entfernen von Anti-Piraterie-Überprüfungen wird als "Knacken" bezeichnet.
Das Knacken kann einfach darin bestehen, die ausführbare Datei des Spiels zu zerlegen, den Ort zu finden, an dem die relevanten Prüfungen durchgeführt werden, sie zu ändern, um die Prüfungen zu deaktivieren, oder die Ergebnisse zu ignorieren und sie wieder zusammenzusetzen. Einige Möglichkeiten, dem Cracken entgegenzuwirken, sind:
Überprüfen Sie die Binärdatei mit einem Hash. Es muss jedoch ein Programm geben, das den Hash überprüft, der wiederum auch geknackt werden kann.
Das Programm oder einfach die Prüfroutine verschlüsseln und zur Laufzeit entschlüsseln. Dies erschwert die Demontage, da ein oder mehrere zusätzliche Entschlüsselungsschritte erforderlich sind. WENN der Entschlüsselungsschlüssel im Programm enthalten ist (wie es sein muss, da das Spiel ohne ihn nicht entschlüsselt werden kann), kann der Pirat die Entschlüsselung rückgängig machen, die Routine finden und den Kopierschutz aufheben.
Aus diesem Grund möchten Sie als Spiele-Publisher den Schlüssel so schwer wie möglich finden und optional den Entschlüsselungsalgorithmus schwer verständlich machen. Einige Möglichkeiten, den Schlüssel schwer zu finden, sind:
Verdecken Sie es, indem Sie es auf seltsame Weise erstellen. Dies verlangsamt einfach den Crackprozess.
Erstellen Sie pro Computer Master-Schlüssel, die dem oben genannten seriellen Schutz ähneln.
Unabhängig von der Methode, die Sie zum Erstellen Ihrer Schlüssel verwenden, befinden sich die Schlüssel selbst im Speicher, während die Entschlüsselung ausgeführt wird. Speicherinspektoren, Debugger und Emulatoren können einem Piraten helfen, den Schlüssel zu finden und zu kopieren, während er sich im Speicher befindet. Memory Peeking kann auf verschiedene Arten angegriffen werden:
Über einen privilegierten Dienst verfügen, der Speicherzugriffe in der angegebenen Region erkennt und die Adressierung an eine andere Stelle umleitet. Da dies Ring-0-Zugriff erfordert und Programme, die dies tun, häufiger für nicht so legitime Zwecke verwendet werden , blockiert Antivirensoftware diese normalerweise. (Aus diesem Grund werden viele Spiele und andere Software aufgefordert, den Virenschutz beim Ausführen zu deaktivieren.) Das Schreiben von Software, die dies korrekt ausführt, ist äußerst schwierig und kann die Stabilität und Sicherheit des Host-Betriebssystems leicht gefährden. Der XCP-Skandal ist ein gutes Beispiel für eine fehlerhafte Implementierung dieser Methode.
Moderne Hardware- und Betriebssysteme bieten einige Tools, wie z. B. Speichervorhänge , sichere Medienpfade und TP-Module , um die Erstellung eines Programms zu vereinfachen, das Daten entschlüsselt und gleichzeitig widerstandsfähig gegen Speicherinspektion ist.
Es gibt noch viel mehr Techniken, um die Piraterie anzugreifen, von der Trivialität bis zur Esoterik. Leider ist es möglich, dass all diese Techniken eine Originalkopie nicht erkennen. In der Regel sind es die aggressiveren Techniken, die höhere falsch-positive Verhältnisse aufweisen.
Als Spiele-Publisher möchten Sie in der Regel eine Reihe von Techniken auswählen, deren Implementierungskosten, erwartete Crack-Zeit und falsch positives Verhältnis Ihren Erwartungen entsprechen.
Es ist ein weit verbreitetes Missverständnis, dass Piraterieschutz absolut unzerbrechlich sein soll. Die meisten Spielverkäufe finden in den ersten Monaten nach der Veröffentlichung statt. Daher wird ein Piraterieschutzsystem normalerweise als effektiv angesehen, wenn es genügend Zeit in Anspruch nimmt, damit der Spielehersteller eine große Menge an Gewinnen sammeln kann, bevor es kaputt geht.
In Bezug auf Game Dev Tycoon verwendeten sie keine Anti-Piraterietechnologien. Sie haben einfach einen "kaputten" Build erstellt und ihn über BitTorrent verteilt, wie am Anfang des von Ihnen erwähnten Artikels angegeben.
quelle
Es ist ziemlich einfach, Sie müssen nur eine MD5- oder SHA256-Datei auf Ihrer eigenen ausführbaren Datei ausführen. Wenn Sie dann feststellen, dass sich die Signatur von dem, was Sie fest in die Binärdatei codiert haben, nach dem Erstellen der endgültigen Version geändert hat, hat jemand Ihre ausführbare Datei gehackt. Dann zeigen die meisten Unternehmen nicht mehr nur ein Popup (wie es früher der Fall war), das "defektes PE" oder "Virus erkannt" anzeigt, und beenden dann das Spiel, da dies sehr schnell von Hackern zurückgebrochen wird. Da das Spiel in der Nachrichtenschleife des Dialogfelds angehalten ist, ist sofort erkennbar, in welchem Zweig das Dialogfeld geöffnet wurde, und Sie können den Zweig einfach umgehen, indem Sie den Code bei der Zustandsüberprüfung ändern.
Heutzutage verwenden Unternehmen sehr subtile Änderungen im Gameplay, wie die Vervielfachung des Lebens von Monstern, um das Spiel unspielbar zu machen, oder sind unglaublich geschickt in dieses Managementspiel integriert, in dem Sie eine Spielefirma leiten und schließlich verlieren, weil zu viele Spieler Ihr Spiel raubkopierten. In diesem Fall ein schöner Abgrund. Manchmal bekommt man nur eine rote Fahne auf die Server des Unternehmens hochgeladen, und wenn man sie anrufen möchte, um Unterstützung zu erhalten, erhält man eine Rede oder wird gefangen, wenn man seine Identität preisgibt.
Aber das ist alles ein Thema, die Technik ist Hasching. und diese Prüfungen können an vielen Stellen in der Binärdatei ausgeführt werden, sodass es nicht ausreicht, wenn Hacker eine finden und löschen.
BEARBEITEN: Wenn Sie das Spiel einfach so kopieren, wie es ist, funktioniert es möglicherweise, wenn das Spiel überhaupt keine Maßnahmen gegen Piraterie hat. Es funktionierte mit sehr alten Spielen, vor der CD-Brenner-Ära. Aus diesem Grund muss das Spiel die meiste Zeit installiert werden, damit es ausgeführt werden kann, und nicht nur der kopierte Installationsordner. Dies beinhaltet versteckte Dateien, die überall im System abgelegt werden, und Registrierungsschlüssel. Das Spiel überprüft das Vorhandensein dieser Dinge, die nur vom Installer erstellt werden können. Das Installationsprogramm kann nur von der CD ausgeführt werden, die aufgrund fehlerhafter Bits, die das Fehlerkorrekturcodesystem in den ersten Bytes der CD nicht berücksichtigen, nicht kopiert werden kann. Dies führt zum Tod der meisten CD-Player-Treiber. Einige Kopiersoftware, wie Nero Alkohol, schlägt vor, die Fehler zu ignorieren, aber was sie brennen, ist dann eine korrigierte Kopie. Der Installer erkennt das und los geht's wieder.
EDIT2:
@ Byte56: Verdammt, wir bekommen hier intelligente Kommentare :) Ja, es ist ein Paradoxon und es kann nicht gelöst werden. Der Hash muss also für den Teil der Binärdatei erstellt werden, der den Hash nicht enthält. Und der Prüfcode muss dies wissen, um diese Zone auszuschließen, wenn eine Selbstprüfung durchgeführt werden soll. Ich habe Leute gesehen, die Tags wie ~~ #### [hier Hash setzen] #### ~~ verwendeten, um ihren Hash einzuschließen und den Ausschluss zu machen. Aber es hat den Nachteil, dass es für Hacker leicht zu erkennen ist. Daher muss der Hash-Code verwürfelt und an mehreren Stellen verstreut werden. Sogar verschlüsselt, warum nicht, und der gleiche Tarnungsvorgang speichert den privaten Schlüssel.
quelle
Ich kann nicht einfach eine Ext-Partition in ein Mac-Spiel einfügen
Macs können ext nicht lesen
quelle