Jedesmal die selbe Prozedur: Hexeditor öffnen, Hex-Strings suchn,e rsetzen, speichern, bla...
Dafür hab ich mir ebn nun nen kleines Tool geschrieben.
Man gibt eine XML Datei mit Hex-Patches an und eine Datei die gepatched werden soll, drückt "Patch" und fertig.
Das ganze hab ich anfangs nur für den Shaiya Client gecoded, zwischendurch kahm mir aber die Idee, es "allgemein" zu halten.
Man kann damit also nicht nur den Shaiya Client patchen sondern eig. jede Exe, DLL oder andere Datei.
Der Aufbau der XML Datei ist sehr simple (für mich ôo) gehalten
Code:
<?xml version="1.0"?>
<ArrayOfPatchPart xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<PatchPart>
<FindString>4d 5a 90 00 03 00 00 00</FindString>
<StartIndex>0</StartIndex>
<ReplaceList>
<PatchReplace Replace="AA" IndexAdd="1" />
<PatchReplace Replace="BB" IndexAdd="2" />
</ReplaceList>
</PatchPart>
<PatchPart>
<FindString>4d aa bb 00 03 00 00 00</FindString>
<StartIndex>0</StartIndex>
<ReplaceList />
<SubPatch>
<FindString>03</FindString>
<StartIndex>0</StartIndex>
<ReplaceList>
<PatchReplace Replace="CC" IndexAdd="0" />
<PatchReplace Replace="DD" IndexAdd="1" />
</ReplaceList>
</SubPatch>
</PatchPart>
</ArrayOfPatchPart>
Wie mans ieht enthält sie 2 "PatchPart"'s, wobei einer nach dem andere abgearbeitet wird.
PatchPart 1 sucht nach dem Hex-String "4d 5a 90 00 03 00 00 00".
Dann wird der gefunde Index verwendet und jedes "PatchReplace" der <ReplaceList> angewand.
Dabei wird auf den gefundenen Index das "IndexAdd" Atrribute addiert.
Wird also "4d 5a 90 00 03 00 00 00" im Index 0, also erster Stelle, gefunden, würde im Index 0 + 1, also 1, der Hex-Wert "5a" mit "AA" ersetzt.
Im Index 0 + 2, also 2, der hex-Wert "90" mit "BB" ersetzt.
So zieht sich das für jeden "Patch" durch.
Das Tool logged dabei jeden erfolgreichen oder fehlgeschlagenen Patch und gibt dies aus.
Wurde am ende nicht jeder Patch gefunden, wird auch keine Datei ge-/beschrieben.
Vor dem erstellen der neuen/gepatchten Datei wird natürlich ein Backup erstellt.
Zum ausführen des Tools wird das .NET Framework 3.5 oder höher benötigt.
Zum öffnen der Projektmappe Visual Studio 2008 oder höher.
Die Projektmappe mit der test.xml findet ihr im Anhang.
Kritik, Wünsche/Ideen, usw sind erwünscht xP
€dit: Scanned;
Antivir: Nothing found
ArcaVir: Nothing found
Avast: Nothing found
AVG: Nothing found
BitDefender: Nothing found
F-Prot: Nothing found
Norman: Nothing found
Rising: Nothing found
VirusBlokAda32: Nothing found
VirusBuster: Nothing found

Scanned by







