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.
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
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
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 =)
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
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 ***** aufreißt? ;p
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), ...
DLL injection und AutoIT DLLCall 11/30/2010 - AutoIt - 4 Replies Hallo,
ich hab ein Problem was mit seit ein paar Stunden den Kopf zerbricht, vllt ist es auch einfach der falsche Ansatz.
Ich hab mir eine DLL zum injizieren mit C++ geschrieben, durch Winject wird diese auch injiziert und die main Funktion durch die WINAPI DLLMain aufgerufen (einfach nur eine MsgBox).
Jetzt besteht meine Frage / Problem darin, kann ich mit AutoIt die restlichen Funktionen auch aufrufen (durch DLLCall) oder soll man dass auch lieber mit C++ realisieren. (andere...