Archive for Juli, 2009

Partyfix

Sonntag, Juli 12th, 2009

Es war damals sicher ein nettes, wenn auch kaum genutztes, Feature: Beim Doppelklicken auf Einträge des Freundes/Party Fensters öffnet sich ein 1:1 Chat mit der angeklickten Person. Spätestens mit der Interface Renewal 2007 wurde es jedoch zum Hassfeature eines jeden Supportcharakters, der gerne über das Partyfenster buffen oder healen würde.

Bereits auf PhaseRO waren die Ruf nach einem “Fix” laut und so hatte ich es damals einfach geändert. Ein ehemaliger pRO Spieler ist nun mittlerweile auf DestinaRO und hat diese Änderung auch dort vorgeschlagen – wurde jedoch zurückgewiesen, weil das “nicht möglich wäre”. Er hat mich nun heute kontaktiert und gebeten, das Gegenteil zu beweisen. In der Theorie eine Sache von 5 Minuten – hätte ich nicht seit 2 Tagen ein neues System (und folglich noch fast keine Tools installiert) und wäre die DestinaRO Exe nicht “gemoleboxed”.

Ansatz 1: Mh, einfach mal IDA nehmen, irgendeine Sakexe disassemblieren, den Double Click Call suchen und die Ops notieren. Dann mit OllyDbg auf die DestinaRO Exe attachen, nach den Ops suchen, Breakpoint setzen, im Partyfenster doppelklicken, vtable des Fensters auslesen und die Doppelklick Funktion patchen. In der Theorie recht easy, in der Praxis bin ich scheinbar unfähig mit Olly umzugehen (ja, ich nutze es selten und Debugging ist nicht wirklich mein Spezialgebiet). Den Call konnte ich noch finden, der Breakpoint wurde auch irgendwie getriggert, aber dann stand alles und jeder weitere Versuch auf die Exe zu attachen endete in einem Totalfreeze des Spiels und Olly ließ sich nicht dazu überreden, weiterzumachen.

Ansatz 2: Okay, das Offset des Calls habe ich, einfach mal an der Stelle die Exe crashen und im Error Handler anhand der Registerwerte das Offset der vtable bekommen (einfach mal vorausgesetzt die Registerverteilung ändert sich nicht, tut sie aber relativ selten). Schnell ein Tool geschrieben, crashen lassen, Tool erweitert. Letztenendes kam also ein Tool heraus, was in die laufende Exe den Patch einspielt – und mit entsprechenden Modes auch die Werte für die Diff ausgibt.

Letzten Endes kam dieses Tool heraus: Download (Source)