[3.3.5a] suche bot source c++

07/22/2011 13:04 Edder#1
Moin,

suche für den 3.3.5a Patch die source eines bots um diesen zu studieren, am liebsten in c++.
Sollte mit memory reading arbeiten, insbesondere das abfragen der Klasse und Rasse des Spielers interessiert mich, Leben, Mana oder Level ist kein Problem.

Gruß
07/22/2011 13:18 Frosttall#2
Quote:
insbesondere das abfragen der Klasse und Rasse des Spielers interessiert mich, Leben, Mana oder Level ist kein Problem.
Dafür braucht man aber keinen source von nem ganzen Bot xD

Das sind Basics
07/22/2011 14:46 Olanden#3
Ich habe damals zwar einen WoW Bot geschrieben, der aber nur die kleinstens Sachen konnte und nicht zum aktiven gebrauchen auf einem offizielen Server gedacht war. Habe damals aufgehört weil ich keine Zeit mehr hatte, wenn du willst adde mich mal in Skype müsste den Source noch irgendwo rum liegen haben - vielleicht können wir ja zusammen dran arbeiten habe gerade viel Zeit.

Lg Olanden
07/22/2011 15:05 Edder#4
Danke für das Angebot Olander, leider habe ich im Moment nicht viel Zeit und suche eigentlich nur was um diese geringe Zeit zu vertreiben, entsprechend gehts bei mir langsam vorran.

In der gBot source bin ich auf folgendes snippet gestoßen:
Code:
const Structures::Races Objects::playerRace()
{
   return (Structures::Races)(UINT8)
      ((readUInt(unitField(playerBase()) + Offsets::UNIT_FIELD_BYTES_0 * 4) >> 0));
}

const Structures::Classes Objects::playerClass()
{
   return (Structures::Classes)(UINT8)
      ((readUInt(unitField(playerBase()) + Offsets::UNIT_FIELD_BYTES_0 * 4) >> 8));
}
Ich habe es versucht dies bei mir zu übertragen:
Code:
int race = pMemory->Read<unsigned int>(uPlayerbase + (mOffsets.UNIT_FIELD_BYTES_0 * 4)) >> 0;
int class = pMemory->Read<unsigned int>(uPlayerbase + (mOffsets.UNIT_FIELD_BYTES_0 * 4)) >> 8;
Aber es trägt keine Früchte...
Playerbase muss korrekt sein, da Leben, Mana usw. korrekt ausgelesen werden, UNIT_FIELD_BYTES_0 ist bei mir 0x17, entspricht dem patch (3.3.5a).
Weis jemand was da schief läuft?
07/22/2011 16:10 Bodog6#5
Seit 3.3.5a muss man auch die WoW-Base hinzufügen ;)

ASLR
07/22/2011 17:01 Edder#6
Ich dachte die WoWBase ist nur der Speicherraum wo WoW schreibt und das erübrigt sich wenn ich ReadProcessMemory benutze?!
Jedenfalls klappts mit Leben, Mana usw. auch ohne.

Naja wieder was gelernt. :)

edit: Meinst du dies: [Only registered and activated users can see links. Click Here To Register...]
Hat jemand da nochmal das besagte snippet, alle Links sind bereits ungültig.
07/22/2011 19:48 Endecs#7
[Only registered and activated users can see links. Click Here To Register...]

Guck bei "[.EXE Hack]"

/e: Da wo "Library.dll" steht änderst du halt in den Namen von deinem Spiel (den Namen findest du im Taskmgr bei den "Prozessen").
z.B "Wow.exe"
07/22/2011 22:18 Edder#8
Danke dir, habe jetzt die base Addresse heraus.
Wie verarbeite ich die weiter?
Sehe ich das richtig das die wowbase nicht bei allen Offsets benötigt wird? Weil beim Leben reicht es folgendermaßen:
Code:
pMemory->Read<unsigned int>(uPlayerbase + (mOffsets.Health * 4));
Aber sobald ich an die UNIT_FIELD_BYTES_0 ran will komme ich nur mit der wowbase weiter?
07/23/2011 01:40 Endecs#9
Quote:
Originally Posted by Edder View Post
Danke dir, habe jetzt die base Addresse heraus.
Wie verarbeite ich die weiter?
Sehe ich das richtig das die wowbase nicht bei allen Offsets benötigt wird? Weil beim Leben reicht es folgendermaßen:
Code:
pMemory->Read<unsigned int>(uPlayerbase + (mOffsets.Health * 4));
Aber sobald ich an die UNIT_FIELD_BYTES_0 ran will komme ich nur mit der wowbase weiter?
Die Baseadress, musst du nur bei Base offsets rechnen, z.B der aller erste Offset von PlayerBase + Baseadresss
07/23/2011 10:24 Edder#10
Danke Endecs, hab es jetzt hinbekommen, es scheint als ob das aus der gBot Source falsch war, jedenfalls bin ich auf [Only registered and activated users can see links. Click Here To Register...] gestoßen (C# Lib) und da konnte ich alles nötige extrahieren, ideal zum lernen.
07/24/2011 19:08 Slash_Les_Paul#11
Edder, wenn du Programmieren willst würde ich mit allgemein C++ Basics anfangen und dem Tool Cheat Engine um die Daten auszulesen die du brauch für HP, Mana etc.

Bei Cheat Engine am besten das Tutorial durch arbeiten. Dann bin ich mir sicher kannste HP und Mana selber schon auslesen.

Dann guckst du dir C++ an, da kann ich dir Videotrainings von Video2Brain empfehlen, kosten nicht viel, aber danach verstehste schon ein wenig von c++ und kannst einfache Dinge schon umsetzten. Für ein C++ Bot wird es nicht reichen aber es ist schonmal ein Anfang.

Warum C++ mache lieber C#, damit kannst du später viel einfacher Bots erstellen. In C++ musst du sehr viel noch erfinden, weil die Bot Community da nicht so groß ist.
In C# auch noch nicht, ist aber einfacher von Haus aus.
Es liegt einfach daran, weil Cpp/C# sehr komplex ist, daher sind viele Bots in AutoIt gemacht wo es eine sehr große Community gibt. Kannst auch vielleicht mit AutoIt anfangen, weil da kann man Bots, recht schnell und einfach Programmieren, zudem kommt noch, dass es einfach zu erlernen ist. Dann kannst du später auf C++/C# umsteigen.

Hoffentlich konnte ich helfen.
07/24/2011 20:47 Frosttall#12
AutoIt eine große community.. Außer die website "AutoItBots" kenne ich keine... AutoIt ist ganz einfach sehr einfach ;)

Ich empfehle dir das Galileo OpenBook, welches für C++ und C# (und viele andere Sprachen) ein kostenfreies EBook anbietet. Einfach mal googeln.
07/24/2011 22:45 Edder#13
Quote:
Originally Posted by Slash_Les_Paul
Danke dir, aber ich schwenke auf c# um, ist alles viel komfortabler und die Ünterstützung ist größer, bei c# kann ich wesentlich komfortabler mit den windows forms arbeiten, werder von Visual Studio fürsorglich umsorgt und es macht mehr Spaß, bei c++ hab ich mit qt gearbeitet und es liegen Welten zwischen der bedienung von qt und win forms, obwohl ich qt eigentlich nie betrügen wollte. :P
Zudem wollte ich mirs dotnet sowieso mal näherbringen, passt alles ganz gut.