So knacken Sie den Zufallszahlengenerator in Minecraft und erhalten jede gewünschte Verzauberung
Auf den ersten Blick sieht Minecraft wie eine einfache Sandbox zum Bauen mit Blöcken aus. In Wirklichkeit arbeitet das Spiel unter der Haube mit einer ganzen Reihe mathematischer Algorithmen, die die Welterzeugung, das Mob-Spawning und den Gegenstandsauswurf steuern. Lange Zeit betrachteten Spieler das Verzaubern von Gegenständen am Verzauberungstisch als reines Glücksspiel. Man investiert 30 Stufen angesammelter Erfahrung, in der Hoffnung auf „Seide Berührung“ oder „Effizienz V“ zu bekommen, und das Spiel bietet einem ein bescheidenes „Haltbarkeit III“.
Man kann die Mathematik nicht täuschen, aber man kann sie berechnen. Jedem Spieler wird ein versteckter numerischer Wert zugewiesen — der XP-Seed — wenn er in der Welt spawnt oder nach jeder Verzauberung. Dieser Wert bestimmt genau, welche Verzauberungsoptionen der Tisch anbieten wird. Das EnchantmentCracker-Repository des Entwicklers Earthcomputer wurde speziell entwickelt, um diesen versteckten Parameter zu entschlüsseln und das Rätselraten zu eliminieren.
So funktioniert das Knacken des Verzauberungs-Seeds
Minecraft Java Edition verwendet einen Standard-Linear-Kongruenzgenerator (LCG) für die Pseudo-Zufallszahlengenerierung. Wenn Sie die Verzauberungstisch-Oberfläche öffnen, nimmt das Spiel Ihren aktuellen XP-Seed, führt ihn durch einen Algorithmus und zeigt drei verfügbare Optionen an.
Jede Verzauberungsoption liefert uns ein Informationsfragment über den internen Zustand des PRNG. Das Tool funktioniert wie folgt:
- Sie legen einen Gegenstand in den Verzauberungstisch und geben die Hinweise, die Sie auf dem Bildschirm sehen, in das Programm ein (die erforderliche Stufe und den Verzauberungsnamen in der Tooltip).
- Sie führen eine günstige Verzauberung der ersten Stufe durch oder werfen den Gegenstand in ein Buch, um den Seed zu verändern.
- Sie geben die neuen geänderten Daten in das Tool ein.
- Das Tool verwendet mathematische Zustandsfilterung, um den exakten 32-Bit-XP-Seed Ihres Charakters zu berechnen.
Sobald der Seed geknackt ist, verschwindet die mathematische Unsicherheit. Das Programm kennt die exakte Reihenfolge aller zukünftigen Verzauberungen. Wenn die benötigten Verzauberungen nicht im nächsten Versuch erscheinen, berechnet das Tool genau, wie viele Zufallszahlen „übersprungen“ werden müssen (zum Beispiel durch Gegenstände werfen oder Rüstungsständer manipulieren), damit der richtige Verzauberungssatz in der ersten Zeile des Tisches erscheint.
Ehrlicher Haftungsausschluss des Autors
Die README des Repositories begrüßt uns mit einer unerwarteten Warnung vom Autor selbst. Earthcomputer schreibt direkt: Sie brauchen dieses eigenständige Programm höchstwahrscheinlich nicht.
Der Grund ist, dass das manuelle Eingeben von Zahlen aus der Spieloberfläche in ein separates Fenster ein mühsamer Prozess ist. Eine falsche Ziffer, und Sie müssen die gesamte Berechnung von vorne beginnen. Deshalb hat der Autor eine praktische Alternative in Form eines Fabric-Client-Mods clientcommands erstellt. Der Mod liest Daten direkt aus dem Speicher des Clients und automatisiert den Prozess über einen Befehl /cenchant.
Warum wird dann das eigenständige EnchantmentCracker-Repository benötigt?
Erstens ist es ein großartiges Lernbeispiel dafür, wie das Reverse-Engineering von Algorithmen und die PRNG-Analyse in eine eigenständige Desktop-GUI-Anwendung in Java verpackt werden. Zweitens erlauben nicht alle Server das Beitreten mit modifizierten Clients. Wenn Sie irgendwo spielen, wo jedes Drittanbieter-Mod vom Anti-Cheat erkannt wird, bleibt ein externes Tool die einzige sichere Option.
Erstellen und Ausführen aus dem Quellcode
Das Projekt ist in Java geschrieben und verwendet das Gradle-Build-System. Darin finden Sie eine funktionierende, auf Swing basierende grafische Oberfläche.
Um eine vorgefertigte Version auszuführen, benötigen Sie Java. Laden Sie das Archiv aus dem Releases-Bereich herunter und führen Sie die ausführbare Datei im bin-Ordner aus:
- Auf Windows ist dies die
enchcracker.bat-Datei. - Auf Linux und macOS — das
enchcracker-Skript.
Wenn Sie das Projekt selbst aus dem Quellcode erstellen möchten, ist das Verfahren Standard:
git clone https://github.com/Earthcomputer/EnchantmentCracker
cd EnchantmentCracker
./gradlew build
Ein fertiges Zip-Archiv mit ausführbaren Skripten erscheint im build/distributions-Verzeichnis. Sie können die Anwendung auch direkt ohne vorheriges Erstellen mit dem Befehl ./gradlew run ausführen.
Für diejenigen, die sich in den Code vertiefen möchten, lässt sich das Projekt problemlos in IntelliJ IDEA oder Eclipse importieren. Das Projekt ist nicht auf komplexe Drittanbieter-Bibliotheken angewiesen, daher ist die Struktur transparent.
Lokalisierung und Unterstützung des Projekts
Das Repository hat Mehrsprachunterstützung durch standardmäßige Java-.properties-Dateien im resources/i18n-Ordner. Der Entwickler gibt ehrlich zu, dass er nur Englisch kann, daher kann er die Übersetzungen nicht selbst pflegen.
Wenn Sie nach einem einfachen Weg suchen, Ihren ersten Pull-Request an ein Open-Source-Projekt zu stellen, ist das Hinzufügen einer Lokalisierung oder das Korrigieren einer Übersetzung ein großartiger Einstieg. Der Autor ist sogar bereit, Übersetzungen über reguläre Issues zu akzeptieren, falls jemand noch keine Erfahrung mit Git hat.
Wer sollte den Quellcode studieren
EnchantmentCracker ist ein kompaktes, aber vollständiges Projekt mit einer interessanten Hintergrundgeschichte. Es zeigt, wie eine mathematische Schwachstelle im Spielcode in ein praktisches Tool für Spieler und Forscher umgewandelt wird.
Der Projektcode lohnt sich zu betrachten, wenn Sie sich für Folgendes interessieren:
- Wie Pseudo-Zufallszahlengeneratoren in Spielen in der Praxis analysiert und deanonymisiert werden.
- Wie die Struktur einer plattformübergreifenden Java-Anwendung aufgebaut ist, die über Gradle erstellt wird.
- Wie eine Desktop-Utility-Implementierung mit auswechselbarer Lokalisierung in reinem Java aussieht.
Selbst in einem Spiel mit einer Millionen-Spieler-Community können Zufallsmechaniken einer strengen mathematischen Berechnung unterzogen werden, wenn man weiß, wo man suchen muss.
Ähnliche Projekte