[Release] Open Souce Projekt für WoW 1.12.1

10/29/2012 15:09 daCoder#1
Hallo liebe EPVP Community,

ich habe mich in letzter Zeit mit WoW 1.12.1 beschäftigt und möchte euch hier mein noch im Anfangsstadium befindendes Programm vorstellen.

Momentan sind folgende Features implementiert.
* Objektliste mit allen Attributen
* Teleport
* Wallclimb
* Speedhack
* No fall damage

Das ist nur ein Teil der öffentlich verfügbaren Hacks, die ich bisher implementiert habe.

Warum veröffentliche ich das so früh?
1. Der Code ist noch nicht besonders lang, daher ist der Einstieg in das Projekt recht einfach. Für Neulinge bietet sich das denke ich auch gut an.
2. Ich suche noch andere gewillte Entwickler, die dieses Projekt vorantreiben möchten.

Da ich selber am Weiterentwickeln bin und ihr eventuell Ideen oder Vorschläge habt, dann nur raus damit :)

Ein Beispiel wie man hier die fertigen Module verwenden kann:
Das Modul erlaubt es direkt alle Objekte als Liste zu laden und dann drüber zu iterieren. Das Beispiel würde sich zu den Kräutern teleportieren mit dem Hintergrund schneller zu sammeln :)
Code:
private void btnExample1_Click(object sender, EventArgs e)
        {
            GameReader WoW = Globals.WoWGame;
            ListWoWObjects list = WoW.getAllObjects();
            WowObject CurrentObject;
            // read the object manager from first object to last.
            for (int i = 0; i < list.Count; i++)
            {
                CurrentObject = list.Get(i);
                switch (CurrentObject.Type)
                {
                    case (short)Constants.ObjType.OT_GAMEOBJ:
                        if (CurrentObject.GameObjectType == (uint)Constants.GameObjectType.Chest)
                        {
                            switch (CurrentObject.Name)
                            {
                                case "Friedensblume":
                                case "Silberblatt":
                                    teleportTo(CurrentObject.XPos, CurrentObject.YPos, CurrentObject.ZPos);
                                    return;
                                default:
                                    break;
                            }
                        }
                        break;
                }
            }
Screenshot:
[Only registered and activated users can see links. Click Here To Register...]

Download: [Only registered and activated users can see links. Click Here To Register...]
Source: [Only registered and activated users can see links. Click Here To Register...]

Ich hoffe ich konnte euch dafür begeistern.

Viele Grüße,
daCoder
10/29/2012 23:03 Frosttall#2
Sehr schön dass es noch leute gibt welche was veröffentlichen :)

Ich würde dir Raten die Vorkommen über ihre Id und nicht über den Namen zu identifizieren.
10/30/2012 14:55 daCoder#3
Danke :)
Die Idee mit der ID ist gut :) Ich hatte das bis jetzt nur zur Testzwecken genutzt.
Ich habe aber größere Probleme beim Sammeln der Kräuter. Ich kann mit dem Ziel nicht interagieren, so etwas wie "Interact with mouseover" Tastaturbelegungen gibt es in wow 1.12.1 nicht :(
Ansonsten wäre das sicherlich ein schneller Gatherbot :D
10/30/2012 19:17 Frosttall#4
Willst du unbedingt Injection vermeiden?
10/30/2012 21:58 daCoder#5
Naja, ich weiß nicht wie es ist die beiden Welten zu kombinieren. Du willst vorschlagen, dass die ich die Interact Funktion direkt aufrufe? Was wäre dann der Kommunikationskanal dafür? Ein thread der eine Speicheraddresse ständig aufruft? Oder ein global registrierter HotKey?

Dazu kommt noch, dass ich die Adresse der entsprechenden Funktion nicht habe.

Aber ich bin für alle Vorschläge offen.
11/01/2012 03:50 Frosttall#6
Ein teilweise injecteter Bot injiziert sich nicht selbst komplett in das Programm sondern nicht bestimmten Code.

Der Sinn dahinter ist dann etwas wie eine Umleitung (trampoling&detour) in eine Funktion, welche sehr sehr oft aufgerufen wird, einzubauen und innerhalb dieser Umleitung deinen Code auszuführen.

Innerhalb dieser Umleitung überprüfst du dann anhand von Events ob du gerade eine Injektion ausführen möchtest, tust dies und gibst wieder ein Event (der Kommunkationskanal zwischen WoW und deinem Programm in diesem Falle), dass deine Befehle ausgeführt wurden.

Im Anschluss springt das Programm nach deiner Umleitung wieder an den ursprünglichen Code und lässt diesen seine Arbeit verrichten.




Ich spreche hier von aktullen Patchstanden und meinem Wissen dass zur heutigen (und auch letzteren) Zeit immer der Mainthread die Funktionen ausrufen musst (du kannst also nicht einfach einen eigenen Thread in dem Prozess starten). Deshalb ist der Umweg über die Umleitung nötig.



Anschauen solltest du dir dann dafür fasmdll_managed.dll (eine Library welche dir das Injzieren von ASM erleichtert), die generelle ASM-Syntax und [Only registered and activated users can see links. Click Here To Register...]


Die Adressen solltest du mithilfe des Dump-Threads von dem "anderen" Forum erhalten.
IDA wirst du auf jeden Fall benötigen!



P.S. Wenn du das gerade nicht verstehst ist das kein Beinbruch, denn das hier ist gerade die tiefste Materie die sich in dem Bereich bietet ;)