Anleitung: Patches für den RomPatcher selber erstellen

Dieses Thema im Forum "Tutorials & FAQs" wurde erstellt von Samus Aran, 4. Okt. 2009.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Samus Aran

    Samus Aran VIP Mitglied

    Registriert seit:
    20. Aug. 2007
    Beiträge:
    4.429
    Zustimmungen:
    1
    Dieses Tutorial ist nur für diejenigen interessant, die ihr Handy gehackt haben und den ROMPatcher/ROMPatcherPlus installiert haben!

    Bestimmt haben die meisten von euch schonmal im ROMPatcher einen oder mehrere Patches benutzt.
    Aber habt ihr euch nie gefragt, was das unverständliche Kauderwelsch in ihnen bedeutet?
    Wenn ihr mit diesem Tutorial fertig seid, solltet ihr es verstehen ;)

    Was brauche ich, um anzufangen?

    Einen Hexadezimaleditor, hier HxD.
    Das RomDump-Paket, um die zu bearbeitenden Dateien überhaupt auf den Rechner zu kriegen (Readme liegt bei, Englisch).
    Ein gehacktes Handy mit installiertem ROMPatcher.

    Bereit? Dann los...

    Sei dir zuerst bewusst, was du wo patchen willst. Nicht, dass du dir nachher dein Handy in Grund und Boden patchst.
    In diesem Tutorial werde ich einen Patch basteln, mit dem du den Text ändern kannst, der angezeigt wird, wenn du im Hauptbildschirm des Handys *#0000# eingibst.

    Die Datei, die hier verändert wird, ist die Phone.exe, weil dort die nötigen Angaben enthalten sind. Näheres dazu folgt jetzt.

    Öffnet HxD, und öffnet die Phone.exe, die sich im Verzeichnis sys\bin\ befindet.

    [​IMG]

    Drückt STRG+F, aktiviert die Box "Unicodezeichen" und klickt rechts auf "Alle", und tippt "z:\resource\versions\model.txt" ein (ohne "").

    [​IMG]

    [​IMG]

    Kopiert den nun gefundenen Hexcode irgendwo hin, von wo ihr ihn später einfach wieder zurück kopieren könnt (Notepad etc.), denn der wird der erste Teil des Patches werden.
    Jetzt tauscht im Klartext, den ihr gefunden habt, das Z gegen ein E aus(damit die .txt-Datei vom Massenspeicher/von der Speicherkarte geladen wird, anstatt vom ROM-Speicher).
    WICHTIG: Markiert mit dem Cursor NUR das Z, und tippt dann ein großes E. Alles andere ändert die Dateigröße und den Hexcode der Datei.
    Wie ihr seht, werden die geänderten Zeichen rot, sowohl im Hexcode als auch im Klartext.

    [​IMG]

    Kopiert nun nochmal den geänderten Abschnitt in Notepad, nur diesmal mit E am Anfang.
    Der nun geänderte Code wird der zweite Teil des Patches.
    Nun geht es ans eigentliche Schreiben des Patches.
    Ein Patch für den ROMPatcher ist immer so aufgebaut:

    ;Patchtitel
    ;Zeilen für
    ;ein bisschen Kommentar, was der Patch macht etc.
    ;Hier können übrigens so viele Zeilen mit ; am Anfang stehen, wie ihr wollt.
    ;Und hier vllt. euren Namen, wenn ihr angeben wollt :D

    Und hier kommt der Code.

    Aber wo bekommt ihr jetzt den Code her?
    Eigentlich habt ihr ihn schon vor euch... :goofy:
    Erinnert ihr euch noch an den Teil, in dem ihr aufgefordert wurdet, zwei Code-Teile irgendwohin zu kopieren?
    Genau diese beiden Abschnitte brauchen wir jetzt.

    [​IMG]

    Code-Beispiel:
    SnR:Pfad:blabla:laberlaber

    SnR ist die Präfix, die es in jedem Patch gibt. SnR steht für "Search and Replace". Also "Suchen und Ersetzen." (Es gibt mehrere Präfixe, dazu kommen wir später.)
    Pfad ist der Pfad zur Datei, aber OHNE Z:\! Der ROMPatcher kann nicht JEDE beliebige Datei in Z bearbeiten, sondern nur die im ROM, sonst würde er ZPatcher heißen.
    Die Dateien, die ihr aufm PC habt, sind die im ROM. Andere könnt ihr nicht beeinflussen.
    blabla wäre der Code, nach dem gesucht wird, und der dann mit
    laberlaber ersetzt würde.
    (blabla ist der erste Code-Teil, den ihr kopiert habt, und laberlaber der zweite Teil)

    Nun aber zu eurem Patch.
    Der wäre also so aufgebaut:

    ;Model Name Changer
    ;This is a patch that changes the Model text
    ;here i can add as many lines as i want
    ;this was made by Microx256 from SF
    SnR:sys\bin\Phone.exe:5A003A005C007200650073006F0075007200630065005C00760065007200730069006F006E0073005C006D006F00640065006C002E00740078007400:45003A005C007200650073006F0075007200630065005C00760065007200730069006F006E0073005C006D006F00640065006C002E00740078007400

    Es wird also nach dem Hexcode gesucht, der im Klartext "Z:\resource\versions\model.txt" bedeutet, und wird durch Änderung von 5A zu 45 zu "E:\resource\versions\model.txt" gemacht.

    Speichert den nun entstandenen Patch als BELIEBIGERNAMEHIER.rmp ab.
    Wie man das macht, steht ein bisschen weiter unten.
    WICHTIG: Der Dateiname ist egal, es kommt nur auf die Endung .rmp an!

    Patches als *.rmp abspeichern...

    Wenn ihr den Patch-Code im Editor(Notepad) habt, geht ihr bitte so vor:
    Wählt den Dateipunkt "Speichern unter..." aus, navigiert in euren Speicherort, und wählt unten, wo "Dateityp:" steht, "Alle Dateien (*.*)" aus.
    Nun könnt ihr im Feld "Dateiname:" euren Patch-Namen und die Endung .rmp eintragen.

    Aber wir sind hier noch nicht fertig.

    Nun müssen wir die Model.txt an den richtigen Platz bringen.
    Erstellt auf E:\ die Ordnerstruktur E:\resource\versions\, und erstellt da drin eine Textdatei namens Model.txt.
    Der Inhalt ist auf 20 Zeichen begrenzt, schreibt ruhig alles rein, was euch in den Sinn kommt, aber bleibt unter 20 Zeichen.
    Allerdings wird euer modifizierter Text nicht mehr angezeigt, wenn ihr die Speicherkarte entfernt ;)

    Nun zu den verschiedenen Präfixen, die wir vorher angesprochen haben.
    SnR: ist nur eine von vielen.
    Eine weitere Präfix ist z.B. Rel:.
    Rel: funktioniert fast genauso wie SnR:, nur dass du mit Rel: auch die genaue Position des zu ersetzenden Codes bestimmen kannst.
    Rel:Pfad\Datei:Position:Suchen:Ersetzen
    Verwirrt? Hier die Lösung:

    Rel: funktioniert wie SnR:, nur anders.
    Pfad ist das gleiche wie bei SnR:.
    Datei ist auch das gleiche wie bei SnR:.
    Position macht den Unterschied zwischen Rel: und SnR: aus, hier wird per Hexcode-Abschnitt die genaue Position des zu ersetzenden Codes bestimmt, dazu später mehr.
    Suchen macht das gleiche wie bei SnR:, nämlich einen bestimmten Hexcode zu suchen.
    Ersetzen ersetzt den vorhergehenden Code.

    Beispiel für Rel:

    In diesem Beispiel möchte ich die WLAN-Suchleiste vom Desktop meines N95 verbannen.
    Ich weiß, dass die verantwortliche Datei die Datei SnifferAIPlugin.dll in Z:\sys\bin\ ist.
    Darüber hinaus habe ich irgendwie herausgefunden, dass ich Erfolg habe,
    wenn ich das erste und das vierte Byte in der Datei zu 00 ändere.
    Das Problem: Die beiden Bytes sind 10 und 79.
    Und die existieren nicht nur einmal in der Datei. Deshalb benutze ich das Rel:-Präfix, um nicht die halbe Datei zu 00 zu ändern:

    [​IMG]

    Um nun die Position eines Bytes herauszufinden, macht ihr Folgendes:
    Nehmt die Zahl in der linken Zeile von HxD, und addiert die Zahl in der oberen Zeile über eurem Byte.
    Das vierte Byte, das ich zu 00 ändern will, wäre also bei 00000003, weil links 00000000 steht, und oben 03.
    00000000 + 03 = 00000003

    Wenn ich jetzt daraus einen Patch mache, hätte ich dies:

    ;No Wlan in ActiveStandby
    ;This removes the Wlan Search bar from the Active Standby, atleast on nokia N95
    ;to get this to work, first disable ActiveStandby, and then apply the patch, and then again enable Active Standby
    ;By Microx256 from Symbian-Freak.com
    rel:sys\bin\SnifferAIPlugin.dll:00000003:10:00
    rel:sys\bin\SnifferAIPlugin.dll:00000000:79:00

    Dieser Patch holt sich in der ersten Code-Zeile also die SnifferAIPlugin.dll aus sys\bin\, und ändert an Position 00000003 das Byte 10 zu 00.

    Viel Spaß mit eurem neu erworbenen Wissen! :)
    Ich hoffe, das war einigermaßen verständlich. Wer das nicht versteht, oder Fragen hat, fragt bitte im dazugehörigen Thread nach.
     
    #1 Samus Aran, 4. Okt. 2009
    Zuletzt von einem Moderator bearbeitet: 5. Nov. 2009
Die Seite wird geladen...
Status des Themas:
Es sind keine weiteren Antworten möglich.