Harmony ist dafür da, Fremdsoftware zu blockieren. Das tut es auch recht gut. Problematisch wird es nur, wenn man ein Programm explizit unterstützen muss… Die Rede ist von RCX – einer japanische Erweiterung des RO Clients, die vielen “alten Hasen” unter RoCha bekannt sein dürfte. Ansonsten verschafft dieses Video einen recht guten Überblick über die Features:
Ein Kunde sprach mich vor kurzem darauf an, dass RCX nicht mit Harmony kompatibel sei. Nicht verwunderlich, schließlich lädt RCX nicht nur eine fremde DLL, sondern fängt auch Winsock Funktionen ab, um anhand der Netzwerkpakete beispielsweise Skilleffekte anzuzeigen. So begann also mein Odysee hin zu einem RCX Fix…
Nach kurzer Codeanalyse stellte sich heraus, warum andere Bot-Protections keine derartigen Probleme haben: Die Netzwerkfunktionen arbeiten nicht direkt auf WinAPI Ebene – RCX umgeht sie daher dezent. Da Harmony auf mehreren Layern arbeitet und alle davon unter RCX liegen gestaltet sich die Sache etwas schwieriger.
Mein finaler Plan:
- Über Whitelisting wird der RCX DLL der Zugriff auf Harmony gestattet
- Ein- und ausgehende Netzwerkpakete werden gesammelt und über emulierte Winsock Aufrufe an RCX übergeben
- ????
- Profit!
Punkt 1 war schnell erledigt. Die Emulation der Winsock Aufrufe wurde etwas ekelhafter: RCX fängt alle Winsock Aufrufe ab und muss daher selbstständig die originalen Funktionen aufrufen. Bei eingehenden Paketen würde RCX also selbstständig “nachfragen”, ob Pakete vorhanden sind, feststellen, dass dem nicht so ist und einfach mal nichts tun. Ich durfte daher die originalen Winsock Funktionsaufrufe ebenfalls abfangen und RCX mit meinen Daten füttern. Dazu kommt, dass einige Harmony Layer den RO Client derart modifizieren, dass eine Rekonstruktion der originalen Pakete nur mit erheblichem Aufwand möglich ist. Yay.
Im Endeffekt konnte ich den Code auf ~300 Zeilen (und 8 Stunden Arbeit…) kürzen, trotzdem denke ich lieber nicht so oft daran, was bei aktiviertem RCX Fix mit Netzwerkpaketen angestellt wird:

Kann man die whitelist nicht exploiten mit einer andere dll oder wie hast du das genau gelöst? o.o
ich überprüfe schon ein paar sachen bevor ich RCX rein lasse
und selbst wenn – mehr als read-only zugriff auf non-harmony pakete kannst du damit eh nicht kriegen…
Ich hab zwar keine Ahnung wie die Programmierung von Harmony funktioniert, aber wäre es nicht einfacher gewsen ein eigenes RCX ähnliches Clienttool in Harmony einzubauen um so den Kunden ein weiteres Feature zu zeigen bzw. das man eine All-in-One Lösung hat ohne externe Programme. Außerdem könnte man doch (bin mir da nicht sicher) damit zeigen was der Window Manager so leisten kann. Ist nur ein konstruktiver Einwand von einem nicht Programmierer.
– Bahmut
Werde ich auch. Allerdings hatte ich in der Situation schlicht keine Zeit, etwas eigenes zu entwickeln, da auf dem Server für viele Spieler RCX überlebensnotwendig war und folglich unter allen Umständen bis zum WoE funktionieren musste.
Aber wie gesagt – ein eigenes RCX Modul ist einer der 3.3 Milestones. Zusammen mit der Fertigstellung des Window Managers…
Teile davon sind ja bereits im RE Client implementiert, wie z.B. der Skilltimer.
All zu viel gibts ja da bei einem eigenen Tool nicht mehr zu tun denke ich.
Vielleicht wäre es auch sinnvoller, erstmal abzuwarten, was Gravity noch alles in den RE Client in absehbarer Zeit implementiert, bevor mein ein eigenes Tool dafür auf die Beine stellt.
Wobei der Delaytimer von RCX zum Beispiel echt prakisch ist (oder auch M2E)… Ich glaube nicht, dass noch allzu viel kommt von Grav.
Wo müsst man sich melden wenn man Interesse an Harmony für seinen eigenen Ro Server hätte ?
Bzw ich hab über ecken gehört das mit Haromny auch änderungen am UI vom RO clienten möglich seien ? Stimmt das und in wie weit bzw wie umfänglich können die sein ?
Grüsse Veydron
Bin per PM über eathena melden oder per MSN
cranker shit :3
So you can make that Harmony accepts RCX or not? :S
People tells me that actually RCX doesn’t works on Harmony 3.3.6 :S
It does work.
I also sent you a reply to your mail request.