[Frage] DllCall, EndScence, Hook, LUA Injection

04/23/2011 18:59 Lumpy#1
Hallihallo,
ich bin mir nicht ganz sicher, ob da hier richtig ist, da es sich auf WoW bezieht.

Ich möchte via AutoIt ein kleines Tool schreiben, mit dem ich z.B. den 'Charakter erstellen' Button drücken kann, ohne das WoW Fenster maximiert zu haben (ControlClick, Mouseclick plus funktionieren bei WoW nicht).

Dazu hab ich mich natürlich schon schlau gemacht und bin auf einige Begriffe wie Endscene, Hook, LUA Injection und die Funktion WowLuaDoString gestoßen.

Jetzt meine Frage: Besteht die Möglichkeit mit C# oder C++ eine .dll zuschrieben, die ich via DllCall aufrufen kann um LUA befehle an WoW zu senden? z.B. um den oben genannten 'Charakter erstellen' Button zu drücken?

Die Benutzeroberfläche von WoW besteht ja hauptsächlich aus GlueXML und ich vermute mal, dass man die einzelnen Komponenten (Auch Eingabefelder, etc.) einfach mit Strings via LUA Injection ansteuern kann.

Wäre nett, wenn jemand helfen könnte. ;)

Gruß Lumpy
04/23/2011 19:41 BlackHybrid#2
Ich glaub du hättest deine Frage lieber in der Gamehacking / Coding section stellen sollen, weil das eigentlich recht wenig mit AutoIt zu tun hat.
04/23/2011 19:44 Lumpy#3
Dann würden aber die ganzen Kids wieder rumjammern, weil AutoIt keine Hochsprache ist und man schließlich den DllCall in AutoIt machen muss. ;)

Aber danke für den Hinweis, ich wende mich mal an nen Mod.
04/23/2011 20:04 lolkop#4
das ganze sollte recht wenig mit irgendwelchen hochsprachen zu tun haben. einfache remotethreads wie button betätigung sollten auch über autoit kein problem sein...

würde mich wundern, wenn man dafür eine dll benötigt :o
04/23/2011 20:16 Lumpy#5
Hättest du denn auch ne Idee, wie man das am besten macht?

Schließlich lebt ein Forum nicht von Antworten wie "Aldi" auf Fragen, wie "Welchen Käse kauf ich am besten?"...
04/23/2011 20:44 lolkop#6
habe leider weder wow installiert, noch mich jemals damit befasst.

die normale vorgehensweise ist halt folgende...

funktion im client suchen
aufruf untersuchen (parameter?, zu setzende register?)

danach einfachen asm code als binärcode fertigstellen (am einfachsten wäre aus dem debugger kopieren)

per virtualallocex einen eigenen speicherbereich freigeben
per writeprocessmemory deinen code dort einfügen
per createremotethread das ganze starten
waitforsingleprocess zum warten auf fertigstellung
virtualfreeex um den freigegebenen speicherbereich wieder zu löschen

habe schon öfters bots für silkroad geschrieben...

ein einfaches beispiel wäre zb [Only registered and activated users can see links. Click Here To Register...]

wobei hier schon etwas etwas asm kenntnisse vorraussetzung sein sollten.

später habe ich mir dann aber udfs geschrieben, welche das ganze doch deutlich übersichtlicher gestalten =)
04/24/2011 00:14 MoepMeep#7
Quote:
Originally Posted by lolkop View Post
habe leider weder wow installiert, noch mich jemals damit befasst.

die normale vorgehensweise ist halt folgende...

funktion im client suchen
aufruf untersuchen (parameter?, zu setzende register?)

danach einfachen asm code als binärcode fertigstellen (am einfachsten wäre aus dem debugger kopieren)

per virtualallocex einen eigenen speicherbereich freigeben
per writeprocessmemory deinen code dort einfügen
per createremotethread das ganze starten
waitforsingleprocess zum warten auf fertigstellung
virtualfreeex um den freigegebenen speicherbereich wieder zu löschen

habe schon öfters bots für silkroad geschrieben...

ein einfaches beispiel wäre zb [Only registered and activated users can see links. Click Here To Register...]

wobei hier schon etwas etwas asm kenntnisse vorraussetzung sein sollten.

später habe ich mir dann aber udfs geschrieben, welche das ganze doch deutlich übersichtlicher gestalten =)
Und dann zusehen, wie warden dir den arsch aufreißt? ;p
04/24/2011 03:44 lolkop#8
Quote:
Originally Posted by MoepMeep View Post
Und dann zusehen, wie warden dir den arsch aufreißt? ;p
wieso? :o

Edit:
sry für mein unwissen aber ich weis nicht wer warden ist :s
04/24/2011 10:37 .BritainAndy#9
Ist warden nicht irgendein Hack Schutz von Wow?
04/24/2011 11:02 Lumpy#10
Warden soll zunächst keine Rolle spielen.

Danke für den Ansatz lolkop, aber ich denke, dass ich es über LUA Injection machen. Denn schließlich hat WoW durch GlueXML schon vordefinierte Befehle, mit denen man sich z.B. auch einloggen kann.
DefaultServerLogin(), ChangeRealm(x,y), ...
04/24/2011 12:33 MoepMeep#11
Quote:
Originally Posted by lolkop View Post
wieso? :o

Edit:
sry für mein unwissen aber ich weis nicht wer warden ist :s
Überleg mal, wieso sich die ganzen gescheiten WoW bots soweit wie möglich aus dem Speicher raushalten :p