Es läuft ...

03/13/2009 17:04 Gertos#1
Please scroll down for the english version

-------------- German version ---------------

Ich möchte hier in dem Forum ein paar meiner Erfahrungen beim erstellen eines funktionierenden Bots für Rappelz berichten, da ich hier doch viele hilfreiche Tipps gefunden habe.


Das wichtigste zuerst : Ich werde hier keine Software posten!
Ich kann euch aber ein paar Hinweise geben wie ich es gemacht habe.

Mein Ansatz beim schreiben war nicht, dass ich versucht habe den GG auszuschalten.
GG ist inzwischen so ausgereift das, dass vermutlich fast unmöglich ist, und man bei jedem Update wieder von vorne anfangen muss, wenn die Machen vom GG Wind von der Methode bekommen haben.

Daher bin ich den Weg gegangen, das mein kleiner Bot sich so gut versteckt, dass er nicht vom GG als Bot erkannt wird.

Ich gehe den Weg, das ich Maus und Tastatur Eingaben genau so erzeuge, wie sie ein Hersteller einer exotischen Hardware erzeugt.
Das geht nur mit einem eigenem Kernel Treiber.
Das Driver Development Kit (DDK) von Microsoft ist hier ein guter Einstieg in die Problematik und liefert gleich diverse Beispiele wie man so was aufbauen kann.

Und GG wird nie unterscheiden können ob der Treiber jetzt zu einer exotischen Hardware gehört oder von einem Cheater erstellt worden ist :D Dafür gibt es davon zu viele.

Ein erster Test ( z.B. mit vertauschen X und Y Achsen bei der Maus ) zeigt sehr schnell, dass der Weg funktioniert.

Wenn man dann jedoch versucht den Treiber aus die Übliche Methode fernzusteuern.
( e.g. mit DeviceIoControl( ) ) muss man feststellen, dass das nicht geht.
GG kennt diese Methode und hat einen Weg gefunden diesen Weg zu verhindern!

Hier muss man jetzt nur noch eine Lücke finden , um eine Kommunikation zu ermöglichen.
(( Ich sage euch nicht meine Lücke , sonst wird die vom GG in 10 min auch geblockt ))

Nach ein paar Stunden suchen hatte ich einen Weg gefunden, und ich bin mir sicher es gibt hier noch viele andere.

Über diesen Weg kann man Tasten und Maus Informationen an das Spiel schicken.

Das Auswerten von Daten aus dem Spiel geht bei mir über den Bildschirm.
Es gibt mehr Wege den Bildschirm auszulesen als GetPixel( ).
Und so lange wie die Leute kleine Videos vom Spiele drehen können, kann man auch die Daten auslesen!

Achtung: Benutzt nicht CopyFromScreen() Die Funktion hat ein Handle Leak und crashed nach 10.000 Calls.

Für das Erkennen der Mondhasen habe ich mir z:B. einen kleinen Screen Texterkennung geschrieben, die den Namen des Monsters auswertet und in Text umwandelt.
Das klingt auf dem ersten Blick recht wild, ist aber im Endeffekt recht einfach, da die Buchstaben fast immer exakt gleich sind.

Was bei mir noch nicht so gut klappt ist:
Ich weiß nicht wo ich mich befinde. Es gibt zwar den „/position“ Befehl.
Durch den halbtransparenten Hintergrund im Chat Fenster ist hier das erkennen jedoch schwerer.

Ich weiß nicht in welche Richtung ich kucke. Erste Versuche mit einem Erkenne des Weißen Bereichs im Map Fenster sind zwar vielversprechend, aber ich scheue derzeit die Arbeit.

Wenn hier einer schon eine Lösung in der Schublade hat, währe ich dankbar für ein paar Hinweise.

Update
Night Dragon hat diesen Link in einem anderem Thread geposted
[Only registered and activated users can see links. Click Here To Register...]

Es könnte sehr nützlich sein, wenn du nicht deinen eigenen Treiber entwicken möchtest.

Ich habe es nicht getested, es sieht aber extram vielversprechend aus.


----------------- english version -----------------------

I want to write down a few of my experience with creating of a full working BOT for rappelz, because I have found a lot useful hints inside of this forum.

The important part first: I will not upload my software!
But I can give you useful hints how I have done it.

My way is that I don’t want to attack GG.
GG is so big and strong developed that it is maybe impossible to bypass it and each update will make it stronger, once the developer find out how a working exploit works.
My way is that my tool hide itself so good that GG don’t notice it as a BOT.

So I create the mouse and keyboard input like any creator an an exotic Hardware.
This way works with an own kernal device driver.

The Driver Development Kit (DDK) from Microsoft is here a good way to start and it contains a lot already working examples.

GG can never decide if a Kernal driver is part of a unknown exotic hardware or part of a Bot , because there are to many different drivers in the wild.

A first working test ( e.g. switch x and y direction from the mouse ) shows us very fast that the way is working ;)

But If you want to use one of the common ways to connect to your own kernal driver (e.g. with DeviceIoControl( ) ) will you notice that the technique not works.
GG knows a way to sabotage this.

Here you have to find a way on your own to get the communication working.
(( I don’t want to spread my solution, because I fear GG will block it in a couple of minutes ))

I have found a way after a few hours of searching and I am sure there a plenty others as well.

With this method you can send keyboard and Mouse Info to the game.


The way from the game to your software works via the screen.

And there are more ways than GetPixel( ).
And as long as people are able to make there own ingame video are you sure there is still a working way.

Important: Don’t use t CopyFromScreen(). The Function has a handle leak and works only 10.000 times.


So , I think this are the most important infos from the above german text.

Don’t hesitate to ask ;) if you need more details.

And don’t miss the links below, they contain some useful details, but sadly the most is in German

---------

Update
Night Dragon has posted this link in an other thread
[Only registered and activated users can see links. Click Here To Register...]

This could be very usefull if you don't want to design your own driver.

I havn't tested it by my own , but it looks very prommising
03/13/2009 18:16 KentuckyFC#2
ja ich habe ne lösung GG wird jeden Dienstag upgedated da wird jeden dienstag ein neuer patch von den GG machern bereitgestellt damit jegliche gefahr ausbleibt


aber wers hinbekommt ders ein Autoit künster oder mit welcher sprache ihr es auch immer schreibt

MFg
03/13/2009 18:19 KentuckyFC#3
Da gegen kannste nix machen musste den bot umschreiben damit der es richtig liest
03/13/2009 22:04 becker1984#4
Es tut vllt alles nur dein Bot läuft nicht...wenn ich dein Post lese weiß ich das jetzt schon ^^ hast nämlich ein paar sachen nicht beachtêt ...wenn du nen funzenden bot hast pm mich mal^^ ich send dir meinen du mir deinen^^ ich schick meinen auch zuerst^^
03/13/2009 22:48 AlterHacker#5
Klingt doch gut =)

Wegen dem GG-Treiber-Bot-Bypass, wären Sockets ne Möglichkeit?
Müsste doch eg?!
03/13/2009 23:28 Gertos#6
@KentuckyFC:
Mit deinen Antworten kann ich leider derzeit nicht viel anfangen. Beziehst du dich auf mein Post oder sind das die Antworten die eigentlich für einen andreen Thread bestimmt sind ?

Mir ist GG und GG Updates derzeit egal. GG kann bei mir aktive bleiben, da es meinen Treiber nicht kennt und damit auch nicht sabotiert.

@becker1984:
hehe , der bot läuft ... was macht dich den stutzig?
Geh mit deinen Fragen ins Detail und ich werde mein bestes tun um die Fragen zu beantworten.



Ich poste mal ein paar Links die den Einstig in das Thema erleichtern:

Ein Einstig in die MS Seiten
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]

Eine Diplomarbeit , bei denen auch ein Maustreiber entwickelt wurde
[Only registered and activated users can see links. Click Here To Register...]
Nur Kapitel 8 über Treiber ist hier wichtig ( Seite 138 - 150)

how to install filter
[Only registered and activated users can see links. Click Here To Register...]
Den ganzen scheiß mit den .inf Dateien braucht man sich nicht antun, wenn man weiß wo und wie man den eigen Treiber in der Registry einhängen kann.
Achtung: Wer hier einen Fehler macht muss sein System evt ohne Maus/Keybord bedienen ;) Ein VM oder ein zweitrechner kann hier nützlich sein.

Ach ja, die Software verteilt sich natürlich auf mehere exe/sys Dateien.

Die Kernal Treiber sind nur für die Low-Level arbeit . Die Hauptarbeit macht bei mir ein .Net Programm.

Ich habe mehere Wochen gebraucht bis ich meinen Code zum laufen gebracht habe.
Wer diesen Weg gehen möchte sollte nicht mit weniger Zeitaufwand rechnen ;)
03/13/2009 23:50 Gertos#7
@AlterHacker:
Sockets klingen sehr gut.
Du darfs jedoch nicht vergessen das du mit einem Device Treiber im Ring 0 vom OS arbeitest. Da kannst du nicht mehr alle API Funktionen oder Standard Libarys benutzten.


Man kann in Treiber mit IoCreateDevice() einen Schnittstelle nach draußen einbauen.
e.g.
...
RtlInitUnicodeString( &DeviceNameUniString, L"\\Device\\myBot" );
RtlInitUnicodeString( &DeviceLinkUniString, L"\\DosDevices\\MyBot" );

status = IoCreateSymbolicLink( &DeviceLinkUniString, &DeviceNameUniString );
...


Auf diese Schnittstelle kann man dann ( Wenn GG nicht aktive ist ) von außen zugreifen.
Das geht sogar von einem Batch ;)

e.g.
echo HelloWorld >> \\.\MyBot
03/14/2009 11:39 KentuckyFC#8
Ich lass mich überraschen wenn du den bot uppst
03/14/2009 12:51 AlterHacker#9
Ich werd mich die Tage mal in Windowstreiber einarbeiten.
(Jetzt nicht wegen GG, ich zock kein Rappelz ;-))
Ein treiber, wo A->B etc ist wäre mal ganz lustig :D
03/16/2009 13:10 KentuckyFC#10
also becker haste nen bot der funzt?

sonst kann ich aufhören verzweifelt daran zu arbeiten nen gg bypass zu machen
03/27/2009 17:59 Gertos#11
Update !
I have translated most of the first post into english.
I hope it helps ;)
03/28/2009 11:14 blacklion120#12
so you have a working bot right....?
03/28/2009 11:15 blacklion120#13
so you have a working bot right.....
03/28/2009 11:15 blacklion120#14
ooops sorry for double post
03/28/2009 11:30 Gertos#15
Yes I have.