Hilfe C++ DLL

08/04/2014 18:23 HoLdY.#1
Hallo, ich bin gerade dabei C++ zu lernen könnte mir jemand den Fehler sagen?
Das Programm soll wenn es dann gehen würde nach den Injekten die ganze Zeit Sendattack befehle senden per Memory edeting.

Main.cpp

autoattack.h

Und zum testen habe ich mal ein paar sachen rausgenommen und wollte ein cout um zu sehen ob der rest soweit geht, ist das schon der komplett falsche ansatz um zu gucken ob das teil überhaupt injected?

Wenn ich die DLL mit dem asm injecte crasht das Game (Metin2(Pserver)),
sobald ich die test variante nehme mit den cout dann crashed das game nicht aber es kommt auf kein cout Fenster.

Kann mir wer helfen?

MFG,
-masterholdy
08/04/2014 18:44 Jeoni#2
Damit das "cout Fenster" erscheint, musst du es auch erstellen. Bei eigenständigen Konsolenprogrammen übernimmt das ein compilergenerierter Code automatisch für dich. Hier müsstest du das über [Only registered and activated users can see links. Click Here To Register...] und [Only registered and activated users can see links. Click Here To Register...] selber machen. Und anschließend noch stdout (von std:: (w)cout benutzt) und ggf. stdin (von std:: (w)cin benutzt) und / oder stderr (std::cerr) mit Hilfe von freopen ([Only registered and activated users can see links. Click Here To Register...] oder auch [Only registered and activated users can see links. Click Here To Register...]) auf die Konsole "umlenken".

Nun zu deinem eigentlichen Code. Ich würde dir ja nahelegen erst zu lernen, bevor man loslegt, aber das beherzigt leider eh kaum jemand.
Warum machst du bei deiner
Code:
if(*autohitpointer == true)
-Abfrage in beiden Fällen (true und false) EXAKT das Gleiche? Willst du die als cmp-Ersatz für das nachfolgende setne vom inline asm nutzen? Keine allzu gute Idee, wenn du nicht genau weißt, dass es der Compiler nicht irgendwie wegoptimiert oder dergleichen.
Im inline asm selber nutzt du zudem DL ohne es vorher zu setzen. Soll das Pseudozufall nach dem Motto "mal schauen, was der Compiler zu diesem Zeitpunkt in DL hat" sein? Sicherlich nicht zielführend.
Darf ich zudem noch fragen, was du davon hast, dass du eine globale bool'sche Variable anlegst (autohit), einen bool-Pointer darauf Zeigen lässt (autohitpointer) und ausschließlich den Pointer derefernziert verwendest? Hat das einen sinnvollen Hintergrund oder eher nicht?
Und das hier
Code:
		if(GetAsyncKeyState(VK_NUMPAD6) && *autohitpointer == false){
		*autohitpointer = true;
			Sleep(100);
		}
		else if (GetAsyncKeyState(VK_NUMPAD6) && *autohitpointer == true){
		*autohitpointer = false;
			Sleep(100);
		}
könnte man selbst als jemand, der nur die ersten paar Kapitel (Operatoren im Speziellen) eines guten Buches kennt, zu
Code:
if (GetAsyncKeyState(VK_NUMPAD6))
{
   *autohitpointer = !autohitpointer;
   Sleep(100);
}
optimieren.

Auch wenn das jetzt vielleicht ein bisschen viel Kritik auf einmal war, hoffe ich doch, dass ich helfen konnte und wünsche noch viel Spaß und gutes Gelingen ;)
Mit freundlichen Grüßen
Jeoni