[Chinesisch] Spiel-Tutorial Kapitel 4: Ändern Sie die Bildwörter in Systemwörter

Das Originalplakat: Cry&Kleiner Schmerz Ansichten: 2652 Antworten: 5 Gepostet in: 2011-12-18 07:09:07
Dies ist ein ergänzender Inhalt, der jedoch auch sehr wichtig ist und sorgfältig auswendig gelernt werden muss -----
Bildzeichen dienen zum Zeichnen von Zeichen auf Bildern, während Systemzeichen dazu dienen, die mit dem Telefon gelieferten Schriftarten aufzurufen, die grundsätzlich vom Erscheinungsbild unterschieden werden können. Nachdem der Text eines solchen Spiels direkt ins Chinesische übersetzt wurde, wird im Spiel „口口口口口口“ (leer) angezeigt. Für Spiele, die eigene Bildzeichen verwenden, umfassen die chinesischen Übersetzungsmethoden die Matrix-Chinesisierung und die Modifikation von Systemzeichen. Die Punktmatrix-Lokalisierung hat ihre Grenzen, wie z. B. zu viel Text, Punktmatrix-Indizes in Klassendateien usw., und ist nur auf einige Spiele anwendbar. Weitere werden in Systemwörter umgewandelt. Für die Änderung müssen Sie über ein gewisses Verständnis der Java-Sprache verfügen. Wenn Sie Java nicht kennen, empfehlen wir Ihnen daher, vor dem Lesen dieses Tutorials JAVA herunterzuladen und zu lernen , um JAVA zu verstehen (muss sein). dekomprimiert). S40-Seitenvorbereitungstools: MC, MobyExplorer,
Mokka-Dekompilierung
BE-Bytecode-Editor
jasmin(/ur l)
(url=http://down2.s60net.com:8118/res/201112/10/17938831/paojiao_94825.jar?) prev auditor ( /url)
(url=http://down2.s60net.com:8118/res/20118/15/89301505/paojiao_89300.jar?) Disass embler2Jasmin


Unter den Java-Spielen, die Bildschriftarten verwenden, sind die Spiele des Spieleherstellers DigitalChocolate die einfachsten. Im Allgemeinen wird das DigitalChocolate-Spiel modifiziert. Das Schokoladenspiel ist eine Einführung in das Lernen. Die Modifikationsmethode des Spiels dieses Herstellers ist eine feste Formel und nicht sehr kompliziert. Nehmen Sie als Beispiel „ My Pet Shop My Pet Store“ von DigitalChocolate. Nachdem Sie das Spiel dekomprimiert haben, verwenden Sie die Mocha-Dekompilierung, um die darin enthaltenen Klassendateien zu dekompilieren, und durchsuchen Sie sie kurz, um die folgenden Methoden zu finden: öffentlich? (Bild image, DataInputStreamdatainputstream, Schriftart, int?, int?) {} Wir haben festgestellt, dass es sich in i befindet. Im Unterricht liegen die Dateien dieser Methode im Allgemeinen in Klassendateien von 3 bis 4 KB vor. Geben Sie daher dem Öffnen von 3- bis 4K-Dateien zum Durchsuchen Vorrang, dann werden Sie sie schnell finden. public i (Bildbild, DataInputStreamdataInputStream, Schriftart, inti1, int j1) {int k; int i2; int j2; char ch; if (image ! = null) (weggelassen...) Was wir tun müssen, ist image = null über if (image! = null) hinzuzufügen. Denken Sie nicht darüber nach. Das Hinzufügen in Java wird nicht funktionieren. Aus Verwirrungs- oder Toolgründen kann die dekompilierte Java-Datei grundsätzlich nicht wieder in eine Klassendatei kompiliert werden. Der Zweck kann durch Ändern des Bytecodes erreicht werden. Erstellen Sie zunächst die neuen Ordner „1“ und „2“ und legen Sie i ab. Fügen Sie die Klasse ein, öffnen Sie die Software Disassembler2Jasmin und es gibt zwei Adressfelder. Füllen Sie das erste aus, E:/1/i. Füllen Sie das zweite Feld der Klasse aus, E:/2/Klicken Sie in der linken Softtaste auf „Unshell“ und ändern Sie i. Die Klasse wird in Bytecode dekompiliert, wodurch i generiert wird. j-Datei. Öffnen Sie i mit einem Texteditor. j, das ist der sogenannte Bytecode, der am Anfang steht: invokespecial java/lang/Object/ () Vaload_1ifnull Label216 Was wir tun müssen, ist, aconst_null
astore_1 vor aload_1 hinzuzufügen und schließlich: invokespecial java/lang/Object/() Vaconst_nullastore_1aload_1ifnull Label216 Okay, speichere die Änderungen, jetzt setze ich. j kompiliert zurück zu i. Klasse, öffne Jasmin, es gibt zwei Adressfelder. Füllen Sie das erste aus, E:/2/i. j Füllen Sie das zweite aus, E:/2/Klicken Sie auf „Kompilieren“ in der linken Softtaste. Nachdem die Kompilierung erfolgreich war, wird sie vorab geprüft. Die kompilierte Klassendatei muss die Überprüfung des Prüfers bestehen, bevor sie zur Verwendung wieder in die Software gepackt werden kann. Öffnen Sie den Auditor Preverifier, füllen Sie beide Pfadfelder mit E:/2/ aus und beginnen Sie mit dem Auditing. Überprüfen wir anhand des geänderten und überprüften i im Mocha Reverse 2-Ordner, ob es korrekt hinzugefügt wurde. Klasse, sehen Sie, ob image=null zur Codezeile if (image ! = null) hinzugefügt wird? Nun, wenn das Hinzufügen erfolgreich ist, ersetzen Sie einfach das ursprüngliche i. Klasse, verpacken Sie das Spiel neu, installieren Sie es und führen Sie es aus, um den Effekt zu sehen. Die Schriftart sieht vor der Änderung so aus: Die Schriftart sieht nach der Änderung so aus: Sehen Sie, die Schriftart hat sich geändert und ist dieselbe wie die Schriftart des Mobiltelefonsystems. Zusätzlich zu den oben genannten Tools können Sie auch den Bytecode-Editor BytecodeEditor verwenden, um Änderungen ohne Dekompilierung vorzunehmen, was immer schneller geht. Software, mit der der Konstantenpool, die Felder, Methoden usw. einer Klasse angezeigt und geändert und der Bytecode direkt geändert werden kann. Der Vorgang besteht darin, die Software zu öffnen – i zu finden und zu öffnen. class--method-"init", sehen Sie bekannten Code? invokespecial java/lang/Object/() Vaload_1ifnull Label216 Bearbeiten und fügen Sie aconst_null
astore_1 hinzu und speichern und überprüfen Sie es dann, was viel praktischer ist. -------------Der grundlegende Bedienungsprozess ist so. Warum müssen Sie ihn so ändern? Lassen Sie uns über das folgende Prinzip sprechen. Im i. Wir sehen diese Methode in Java: public void a (Graphicsgraphics, String string, int i1, int j1, int k1) {if (a! = null) {...graphics. setClip(i5, j5, k5 - i5, i6 - j5); Grafik. drawImage(a, i1 - (a[i4] & 255), j1 - a[i4] - b2, 20);}i1 += b1 + c;}graphics. setClip(i2, k2, i3, j3); return;} Hinweis: Viele Spiele verwenden die Methode public void a (Graphics Graphics, String string, int i1, int j1, int k1...), um Zeichenfolgen zu zeichnen. Im if-Abschnitt sehen wir die setClip-Methode zum Ausschneiden von Bildern. Das Prinzip der setClip-Methode besteht darin, nur einen Teil des Inhalts auf dem Bildschirm anzuzeigen, sodass der Inhalt des Bildes angezeigt wird, der sich genau in diesem Teil befindet. drawImage ist eine Methode zum Zeichnen bestimmter Bilder. Man kann sich leicht vorstellen, dass die Methode in if zum Anzeigen von Bildwörtern verwendet wird. Grafik. setFont(a); int j2 = Grafik. getColor();if (a){......Grafiken. setColor(b); Grafik. drawString(string, i1, j1 - 1, k1); Grafik. drawString(string, i1 - 1, j1, k1); Grafik. drawString(string, i1 + 1, j1, k1); Grafik. drawString(string, i1, j1 + 1, k1);} Grafiken. setColor(a); Grafik. drawString(string, i1, j1, k1); Grafik. setColor(j2);} Hinweis: Der Teil unter dem „if“ ist der Schlüsselteil. Wir haben die Methode drawString zum Zeichnen von Zeichenfolgen gesehen und wissen daher, dass wir dafür sorgen müssen, dass diese Methode nicht den Teil innerhalb von if ausführt, sondern direkt zum Systemwortteil unten wechselt. (Ergänzung: Wenn bedingte Divergenzanweisungen gemäß unterschiedlichen Bedingungen in unterschiedliche Prozesse umgewandelt werden. Schauen wir uns dann den Anfang an, wenn (a! = null), wir sehen, dass dies durch die Beurteilung der Variablen a beurteilt wird. Und wo ist diese Variable definiert? Zuvor haben wir über die Methode public c (Image image, DataInputStreamdatainputstream, Font font, int i, int j) gesprochen, wir könnten genauso gut einen Blick darauf werfen. public i (Image image, DataInputStreamdataInputStream, Font Schriftart, int i1, int j1) {int k; int j2; if (image ! = null) {a = image;b = j1; a = j1! = -1; } Hinweis: Sie können sehen, dass diese Methode die Variable a beinhaltet und die Aufgabe dieser Variablen darin besteht, zu bestimmen, ob die Bildmenge null ist. Dann sah ich eine =-Schriftart in else; Dieser Satz bedeutet, die Schriftartmenge einer (Schriftvariablen) zuzuweisen, was als Zuweisung der Systemschriftart zu a verstanden werden kann. Wir hoffen also, dass wir versuchen können, diese Methode immer sonst auszuführen, sodass wir image = null vor if (image ! = null); hinzufügen können. Auf diese Weise ist der Wert von image zu Beginn null und der Teil in else wird ausgeführt. Im Bytecode: aload_1ifnull Label216 entspricht if (image! = null). (Aufgrund des Tools ist es schwieriger, die Positionierung auf dem Mobiltelefon zu ändern als auf dem Computer.) aload_1 dient dazu, das erste (1) Objekt zu laden, auf das die lokale Variable verweist, und es auf den Stapel zu verschieben. Die erste lokale Variable entspricht dem Bild an der ersten Position des Methodennamens. Fügen Sie hier image=null hinzu, um einen Nullbetrag für das Bild zu erstellen. aconst_nullastore_1 Wenn Sie mehr über das Prinzip erfahren möchten, können Sie einen Blick auf Java Bytecode Revealed werfen. Es ist zu beachten, dass die „1“ in astore_1 auf dem vorherigen if (image ! = null) basiert. Wir sehen, dass die dritte Zeile aload_1 ist, hier ist sie 1, dann muss astore_1 auch 1 sein. Wenn es wiederum aload_2 ist, sollte es astore_2 sein und so weiter. aconst_null
astore_1 Dieses Codesegment ist relativ mechanisch, sodass Sie es sich merken können. Die von Digital Chocolate produzierten Spiele sind relativ fest und jeder, der seine Spiele lokalisieren möchte, sollte sie auf diese Weise modifizieren. Die Spielmodifikationen von DC sind im Grunde die Grundlage für viele Spielmodifikationen. Daher wird empfohlen, dass jeder es gründlich beherrscht. Spiele anderer Hersteller sind nicht so einfach und selbst Spiele desselben Herstellers können unterschiedliche Modifikationsmethoden haben. Was benötigt wird, ist kontinuierliches Lernen und Üben, das Sammeln von Erfahrungen und die Vertiefung des Verständnisses von Java.

-------------------Chinesische Version des Textes des Digital Chocolate-Spiels. Nachdem Sie die Bildzeichen erfolgreich in Systemzeichen umgewandelt haben, können Sie den Text direkt chinesisch umwandeln. Die Sprachdateien sind grundsätzlich l0_0, l0_1, l0_2 usw. Wählen Sie in „Mein Zooladen“ im Allgemeinen Chinesisch l0_0 (Englisch). Verwenden Sie das Plug-in im SUMEA-Ordner im Computertool Halo, um es direkt zu öffnen und zu ändern. Auf dem Mobiltelefon müssen Sie Hexadezimal verwenden. Öffnen Sie l0_0 im Hexadezimalformat. 00 00 3c 75 stellt die Gesamtzahl der Bytes 15477 dar, 00 00 01 6c stellt die Gesamtzahl der Startbytes 364 dar, 00 00 05 b8, 00 00 05 c1... stellt das Feldstartbyte dar. Was ist das Feldstartbyte? Linker Softkey - Bearbeiten - Gehen Sie zur Adresse, geben Sie die Adresse 0x5b8 oder dezimal 1464 ein. Nach der Bestätigung werden Sie feststellen, dass es sich um die Bytenummer 00 06 des Englischen handelt. Geben Sie dann das zweite 0x5c1 ein, um zum 00 02 von Ok unten zu gelangen. Jedes Startbyte entspricht wiederum den folgenden Feldern. Um es ganz klar auszudrücken: 5b8 ist die Gesamtzahl der Bytes vor 00 06. Die Anzahl der Bytes ändert sich, wenn wir sie lokalisieren, und diese müssen geändert werden, was ziemlich kompliziert und mühsam ist.
Antwort 🤍 0 📤 Aktie sammeln
Zu tiefgründig!
Oben…………
Das ist erst richtig schwer……
Oben ist es knapp, das hier versteht man wirklich nicht.
Wenn man es mit BE öffnet, gibt es darin nur invokespecial java/lang/Object/
— Alle Antworten geladen —

Hinterlassen Sie eine Antwort