Register for your free account! | Forgot your password?

Go Back   elitepvpers > World of Warcraft > WoW Private Server
You last visited: Today at 17:18

  • Please register to post and access all features, it's quick, easy and FREE!


SendChatMessage Aufruf bewirkt nichts [C++]

Reply
 
Old   #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



Crossside is offline  
Old 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.


Cencil is offline  
Old 03/13/2014, 01:22   #3
 
elite*gold: 0
Join Date: Dec 2013
Posts: 2,095
Received Thanks: 506
Quote:
Originally Posted by Cencil View Post
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
Crossside is offline  
Old 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.


Cencil is offline  
Old 03/13/2014, 01:48   #5
 
elite*gold: 0
Join Date: Dec 2013
Posts: 2,095
Received Thanks: 506
Quote:
Originally Posted by Cencil View Post
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

Code:
(WoW.exe+0x17BFD0)
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 View Post
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
Crossside is offline  
Old 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 View Post
Also die SetZoom die ich rausgesucht habe (IDA) liegt bei

Code:
(WoW.exe+0x17BFD0)
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
Cencil is offline  
Old 03/17/2014, 18:02   #7
 
elite*gold: 0
Join Date: Jan 2010
Posts: 13,120
Received Thanks: 3,169
Arrow WoW Main - Discussions / Questions -> WoW Private Server

#moved
Ravenstorm is offline  
Old 03/17/2014, 18:29   #8
 
elite*gold: 0
Join Date: Dec 2013
Posts: 2,095
Received Thanks: 506
Quote:
Originally Posted by Ravenstorm View Post
#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.



Crossside is offline  
Reply



« Hi Brauche Backgrounddownloader 4,.3.4 | WoW Privat server hilfe gesucht »

Similar Threads
Ich höre nichts, nichts von Youtube nichts.
Also mein Problem ist schwer zu beschreiben , also bitte nicht rumfluchen wenn ich etwas nicht korrekt ausdrücke. So ich hab ein paar Programme...
19 Replies - Technical Support
One-Man-Army! Was bewirkt es?
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...
5 Replies - Call of Duty
Was bewirkt Stamania?
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...
8 Replies - WarRock



All times are GMT +2. The time now is 17:18.


Powered by vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Abuse
Copyright ©2018 elitepvpers All Rights Reserved.