|
You last visited: Today at 18:31
Advertisement
SendChatMessage Aufruf bewirkt nichts [C++]
Discussion on SendChatMessage Aufruf bewirkt nichts [C++] within the WoW Private Server forum part of the World of Warcraft category.
03/10/2014, 20:53
|
#1
|
elite*gold: 0
Join Date: Dec 2013
Posts: 2,095
Received Thanks: 506
|
SendChatMessage Aufruf bewirkt nichts [C++]
Hey,
Ich spiele mittlerweile wieder ein bisschen mit Gamehacking rum, ich wollte zunächst für 3.3.5a Privatserver (Rising Gods) ein Programm machen womit man Netzwerk Pakete auslesen & senden kann.. das ganze war mir bisher aber dann noch zu komplex, weswegen ich nun etwas rumspielen wollte mit Game Internen Funktionen wie zb SetZoom, ReloadUI,SendChatMessage etc.
Ich hab nun versucht die Gamefunktion SendChatMessage in einem C++ Programm (naja, in ner dll die ich injecte^^) zu integrieren, aber wenn ich dann das ganze injecte passiert rein 0.
Ich hab schon zuvor mit einigen Gamefunktionen rumgespielt, und auch schon Diverse Dinge hinbekommen.. an dem Grundaufbau der Dll oder den Mangelnden Rechten der Dll liegt es also schon einmal nicht.
Es gibt eben auch keinerlei Absturz oder sonstige Typischen Anzeichen für einen Fehler. Ich zeig euch mal wie ich das ganze realisiert habe bis dato..
Code:
typedef void(__stdcall *SendChatMessage)(string a, string b, string c, string d);
SendChatMessage MySend = (SendChatMessage)0x0050D170;
MySend("muh", "CHANNEL", "Gemeinsprache", "1");
Normalerweise nutze ich ein Offset für das ganze, habe ich aber diesmal weggelassen um eventuelle Fehler vorzubeugen bezüglich der ermittlung der Adresse mit dem Offset.
Wie gesagt, ich injecte das ganze und.. nichts. Keine Chatmessage im Say-Chat, kein garnichts. Weiß jemand ob ich einen fehler in meinem typedef oder sonstwo habe? Ich bin noch nicht so erfahren in dem ganzen und bin noch beim lernen.. deshalb weiß ich nicht genau ob das alles passt (müsste es aber denke ich, sonst müsste es ja ein Crash o.ä geben).
Ich habe es mal versucht mit CE zu debuggen, und habe ein breakpoint auf SendChatMessage gesetzt.. es scheint aufgerufen zu werden durch meine dll, aber es passiert nichts :-?
Ich wäre wirklich ultra Glücklich wenn mir da jemand mal drüberschauen könnte
grüße
|
|
|
03/12/2014, 21:12
|
#2
|
elite*gold: 97
Join Date: Jun 2007
Posts: 2,246
Received Thanks: 4,850
|
Die Lua Funktionen sind cdecl, nicht stdcall, so wie so ziemlich jede Funktion in WoW die keinen this Zeiger erwartet.
Deine Parameter sind falsch, du darfst bei den Lua Funktionen nur einen Parameter pushen, das wäre der Lua State. Der Rest würde mit den Lua internen Funktionen gepusht werden (lua_pushXXX).
Würde dir empfehlen FrameScript_Execute (0x00819210) zu verwenden.
Code:
typedef void(__cdecl *tFrameScript_Execute)(const char *lua, const char *luafile, int length);
tFrameScript_Execute FrameScript_Execute = (tFrameScript_Execute)0x00819210;
FrameScript_Execute("SendChatMessage(\"Hello World, I'm happy now!\");", "himym.lua", 0);
Nicht zu vergessen das du das Ganze aus WoWs Main-Thread heraus aufrufen musst. Also entweder irgendne Main-Thread Funktion hooken, oder mit SetThreadContext injecten etc.
|
|
|
03/13/2014, 01:22
|
#3
|
elite*gold: 0
Join Date: Dec 2013
Posts: 2,095
Received Thanks: 506
|
Quote:
Originally Posted by Cencil
Die Lua Funktionen sind cdecl, nicht stdcall, so wie so ziemlich jede Funktion in WoW die keinen this Zeiger erwartet.
Deine Parameter sind falsch, du darfst bei den Lua Funktionen nur einen Parameter pushen, das wäre der Lua State. Der Rest würde mit den Lua internen Funktionen gepusht werden (lua_pushXXX).
Würde dir empfehlen FrameScript_Execute (0x00819210) zu verwenden.
Code:
typedef void(__cdecl *tFrameScript_Execute)(const char *lua, const char *luafile, int length);
tFrameScript_Execute FrameScript_Execute = (tFrameScript_Execute)0x00819210;
FrameScript_Execute("SendChatMessage(\"Hello World, I'm happy now!\");", "himym.lua", 0);
Nicht zu vergessen das du das Ganze aus WoWs Main-Thread heraus aufrufen musst. Also entweder irgendne Main-Thread Funktion hooken, oder mit SetThreadContext injecten etc.
|
Hm...
Aber bei Minimap:SetZoom(int zoom) konnte ich es ja auf diesem Wege den ich beschrieben hatte auch ohne Probleme benutzen 
Verwirrt mich das es dann bei SendChatMessage nicht klappt wie ich mir das vorstelle.
Zumindestens mal vielen dank für die Hilfe, ich werde es mal so wie von dir beschrieben angehen (hätte echt gedacht es ist stdcall *hust* danke *g*).
p.s: Ist die himym.lua frei erfunden, oder ist das eine interne lua datei die ich zwingend mit übergeben müsste? Oder wäre es damit sogar möglich eigene Lua Funktionen einzubauen?
Vielen Dank
|
|
|
03/13/2014, 01:31
|
#4
|
elite*gold: 97
Join Date: Jun 2007
Posts: 2,246
Received Thanks: 4,850
|
Minimap::SetZoom ist dann vermutlich keine Lua Funktion (nehme an 7F3AE0?). Wenn du sie ebenfalls als stdcall deklariert hast kracht es mit Glück nicht sofort.
Der Dateiname dient bei Execute nur zu Debugging-Zwecken, falls ein Lua Error rausgehauen wird. Den Parameter musst du immer übergeben, und wenn du nur nen "" angibst.
|
|
|
03/13/2014, 01:48
|
#5
|
elite*gold: 0
Join Date: Dec 2013
Posts: 2,095
Received Thanks: 506
|
Quote:
Originally Posted by Cencil
Minimap::SetZoom ist dann vermutlich keine Lua Funktion (nehme an 6448F5?). Wenn du sie ebenfalls als stdcall deklariert hast kracht es mit Glück nicht sofort.
|
Also die SetZoom die ich rausgesucht habe (IDA) liegt bei
Und soweit ich das ganze in Erinnerung habe (hatte es nur kurz getestet) müsste das eigendlich eine cdecl gewesen sein, da bin ich mir aber nicht mehr genau sicher. Ich komme da noch nicht wirklich klar mit dem unterscheiden von cdecl und stdcall in IDA Pro..
Quote:
Originally Posted by Cencil
Der Dateiname dient bei Execute nur zu Debugging-Zwecken, falls ein Lua Error rausgehauen wird. Den Parameter musst du immer übergeben, und wenn du nur nen "" angibst.
|
Und, das ist dann wohl das bekannte "hax.lua" von einem gewissen Hack für WoW der noch für 4.x war.. okay, dann ist das klar
Vielen Dank & Schöne Nacht noch
|
|
|
03/13/2014, 02:17
|
#6
|
elite*gold: 97
Join Date: Jun 2007
Posts: 2,246
Received Thanks: 4,850
|
Quote:
Originally Posted by Crossside
Also die SetZoom die ich rausgesucht habe (IDA) liegt bei
Und soweit ich das ganze in Erinnerung habe (hatte es nur kurz getestet) müsste das eigendlich eine cdecl gewesen sein, da bin ich mir aber nicht mehr genau sicher. Ich komme da noch nicht wirklich klar mit dem unterscheiden von cdecl und stdcall in IDA Pro..
Und, das ist dann wohl das bekannte "hax.lua" von einem gewissen Hack für WoW der noch für 4.x war.. okay, dann ist das klar
Vielen Dank & Schöne Nacht noch 
|
Verwunderlich weil du wieder direkt ne Lua Funktion gecallt hast.
Bei cdecl hat der caller den Stack aufzuräumen.
z.B. erkennbar an add esp, anzahl Pushs * 4 (kann sich mit anderen cdecl Funktionen überlappen) unmittelbar nach dem Call.
Außer cdecl und thiscall ist bei 3.3.5 nichts relevant für dich.
edit: Oder verständlich erklärt:
http://de.wikipedia.org/wiki/Aufrufkonvention
|
|
|
03/17/2014, 18:02
|
#7
|
elite*gold: 0
Join Date: Jan 2010
Posts: 13,150
Received Thanks: 3,206
|
WoW Main - Discussions / Questions -> WoW Private Server
#moved
|
|
|
03/17/2014, 18:29
|
#8
|
elite*gold: 0
Join Date: Dec 2013
Posts: 2,095
Received Thanks: 506
|
Quote:
Originally Posted by Ravenstorm
#moved
|
Der Move war unnötig.. das ist schon in der C++ Section gut aufgehoben gewesen.. Meine Frage ist schließlich über C++ coding wo ich hilfe such(t)e und nicht über Dinge die spezifisch für Privatserver sind.
|
|
|
 |
Similar Threads
|
Ich höre nichts, nichts von Youtube nichts.
09/19/2012 - Technical Support - 19 Replies
Also mein Problem ist schwer zu beschreiben , also bitte nicht rumfluchen wenn ich etwas nicht korrekt ausdrücke.
So ich hab ein paar Programme installiert, und nach einer Zeit kam unten eine Meldung (habe Windows 7), dass irgend ne Prmium Sound Dings installiert wurde.
So jetzt klicke ich auf meinen Lautsprecher und dann kommt das :
http://i.epvpimg.com/V31Fh.png
Dann hab ich auf den Lautsprecher geklickt und da kommen 2 Lines, Line I und Line II:
http://i.epvpimg.com/0GZ4b.png
k.A...
|
One-Man-Army! Was bewirkt es?
07/18/2012 - Call of Duty - 5 Replies
Habe leider grad kein MW2 um nachzuschauen, aber muss es dringend wissen. Kann danach auch sofort geclosed werden!
Was bewirkt das Perk One-Man-Army / Pro?
|
Was bewirkt Stamania?
11/12/2010 - WarRock - 8 Replies
Ich habe viele meinungen gehört was es bewirken soll z.B. dass es den Spieler schneller macht usw...
Jetzt wollte ich von Spielern ,die Stamania nutzten, wissen was genau es bewirkt.
|
All times are GMT +1. The time now is 18:34.
|
|