Hey, ich hab mal ne Frage und hoffe das das hier die richtige Section ist. Ich würde ganz gerne wissen, wie man, wenn man eine DLL in einen fremden Prozess injected hat, am besten mit dieser kommuniziert. Ich würde nämlich gerne einen kleinen Multi-Speedhack mit GetTickCount hook schreiben (die DLL ist schon fertig und läuft auch), nur weiß ich nicht wie ich mit der injizierten DLL dann kommunizieren soll um z.B. die Geschwindigkeit zu regulieren. Die Geschwindigkeit in eine Datei zu speichern erscheint mir irgendwie ziemlich unsauber. Ist es irgendwie möglich, Funktionen in der injizierten DLL aufzurufen (vom externen Interface aus)? Ich code übrigens mit VC++. Hoffe auf Hilfe, jeder der etwas nützliches antwortet bekommt ein Thanks, danke schon mal im Vorraus
Hey, ich hab mal ne Frage und hoffe das das hier die richtige Section ist. Ich würde ganz gerne wissen, wie man, wenn man eine DLL in einen fremden Prozess injected hat, am besten mit dieser kommuniziert. Ich würde nämlich gerne einen kleinen Multi-Speedhack mit GetTickCount hook schreiben (die DLL ist schon fertig und läuft auch), nur weiß ich nicht wie ich mit der injizierten DLL dann kommunizieren soll um z.B. die Geschwindigkeit zu regulieren. Die Geschwindigkeit in eine Datei zu speichern erscheint mir irgendwie ziemlich unsauber. Ist es irgendwie möglich, Funktionen in der injizierten DLL aufzurufen (vom externen Interface aus)? Ich code übrigens mit VC++. Hoffe auf Hilfe, jeder der etwas nützliches antwortet bekommt ein Thanks, danke schon mal im Vorraus
Ich kenn mich zwar auf diesem Gebiet nicht so gut aus , aber ich würde es über eine TCP-Connection probieren , am besten an den Localhost , dann sollte es gehen
Ansich könntest du ja den Regler mit dem du die geschwindichkeit angibst mit in die dll einbauen. Ansonsten musste dich mal über interprocess comunication informieren, die wird bei windows meist einfach mit sockets realiesiert.
Danke für eure Antworten schon mal, an eine TCP connection hatte ich auch schon gedacht. Aber wie macht es denn z.B. Cheat Engine? Diese gewaltigen Datenmengen können ja nicht einfach per TCP übertragen werden, oder? Das Beste wäre imo wirklich, wenn es eine Möglichkeit gäbe, Funktionen in der injizierten Instanz der DLL aufrufen zu können. Weiß jemand, ob sowas möglich ist?
das geht ganz einfach wenn dein timer eine zeit hat
machst int a = 100; z.B a ist dann die zeitangabe für die sekunden bzw millisekunden
dann könntest du per hotkey die zeit hochsetzen
so hier z.B#
if (GetKeyState(VK_F12)<0)a++ ; zum hochsetzen
if (GetKeyState(VK_F11)<0)a--; zum runtersetzen
nachteil man sieht nicht wie hoch oder tief die zeit eingestellt wird
aber wenn du was mit DX hast kannst du die zeit ausgeben lassen
das würde dann so aussehen
DeinFunktionZumStringsZeichnen(10, 10, D3DCOLOR_ARGB(255, 255, 0, 0 ),Front,"Zeit: %d", a )
aber wie du es machst mußt du wissen gibt viele wege der einfachste find ich ist die zeit in eine ini bzw config zu schreiben
Ein DX Hook würde mich wieder auf eine bestimmte DX Version festlegen und Hotkeys find ich persönlich auch nicht so toll. Die Idee mit den Pipes finde ich sehr gut, danke, hast mir sehr geholfen, xNopex Kann closed werden ^^
Es gibt noch die Möglichkeit einer shared section
Das ist wohl die schnellste Methode für IPC
Dabei teilt jede Instanz der DLL sich die Shared Section, also ist es über diese Möglich zwischen den Instanzen der DLL Daten zu transferieren, das Prinzip ist eigentlich das Gleiche wie bei den Pipes, nämlich das ein Buffer zwischen mehreren Prozessen geteilt wird, nur kommt man mit einer Shared Section ohne Windows API calls aus und kann die Kommunikation damit günstiger Implementieren als über Pipes, allerdings ist das mit etwas mehr Aufwand verbunden als das Verwenden von Pipes.
Wenn du ein Bespiel für Shared Memory suchst, dann schau dir den Source Code von WoW!Sharp an, die DLL welche WoW!Sharp in WoW injizierte benutzt Shared Memory für die Kommunikation mit dem C# teil des bots, allerdings ist das nicht Optimal implementiert, wenn man das so macht wie WoW!Sharp ist es nur möglich eine DLL auf einmal zu Injekten.
Ich würd sagen Pipes, FileMappings (sind doch auch für inter process communication oder?) oder auch Messages.
Gibt ja WM_DATA oder so als Messagetyp.
Da wäre auch noch die sehr unflexible, unelegante nooblike Version mit einer gemeinsam genutzten Datei (ini, txt oder sonst was), würde ich aber nich empfehlen ;D
TCP halte ich dafür auch nicht so besonders, auch wenn es sich mit dem Localhost verbindet, meckert in dem Falle normalerweise die Firewall.
Quote:
Danke für eure Antworten schon mal, an eine TCP connection hatte ich auch schon gedacht. Aber wie macht es denn z.B. Cheat Engine? Diese gewaltigen Datenmengen können ja nicht einfach per TCP übertragen werden, oder? Das Beste wäre imo wirklich, wenn es eine Möglichkeit gäbe, Funktionen in der injizierten Instanz der DLL aufrufen zu können. Weiß jemand, ob sowas möglich ist?
CE kommuniziert glaube ich per FileMappings oder Pipes...denke mal eher Pipes, da es schneller geht.
[Frage] Addon kommunikation per z.b. TCP? 10/19/2009 - World of Warcraft - 2 Replies Ist es möglich ein Addon mit einem Server kommunizieren zu lassen, bzw. Informationen an jenen weiterzuleiten?
Wenn ja, wie würde das funktionieren?
Welche Möglichkeiten gibt es dafür?
Beispiel: DamageMeter des Raids wird nach dem Kampf automatisch auf der GildenHP aktualisiert.
process/thread kommunikation 06/08/2009 - General Coding - 1 Replies hi :)
ich hab ne dll, die funktionen enthält die ich gerne aufrufen würde. problem ist, dass diese dll injeziert wird. also kann ich ja nicht diese funktionen exportieren und benutzen oO ( extern "C" void bloop(); ) ???
wie kann ich also die dll wissen lassen, wann ich diese funktion benutzen will? was gibts da für schnittstellen? klärt mich ma bischen auf ;)
danke jetzt schonmal!