kleine DLL zum injecten in C++ erstellen, aber wie ?

11/20/2010 20:54 WhiteLionATX#1
moin leute :)
ich hab mich recht frisch hier angebeldet und hoffe ihr könnt mir weiterhelfen.
ich scripte recht viel mit autoit und stoße jetzt etwas an meine grenzen.
Eine dll in einen prozess zu injecten ist kein problem, nur eine DLL in autoit erstellen geht natürlich nicht. deshalb muss ich jetzt zwangsweise (um erstmal zum ziel zu kommen) auf c++ zurückgreifen. ich schreib mal worum es geht:

Ich habe ein spiel was einen funktionsaufruf durch einein call erledigt:
0044ff23 call 00543e22
dieser call ist eine funktion die vom stack ein konsolenbefehl holt und ausführt. meines wissens nach müsste ich (kann aber auch falsch sein) folgendes machen:

eine DLL schreiben der ich konsolenbefehle übergeben kann, die injecte ich dann in den prozess und diese macht dann, sobald sie einen string bekommt folgendes:
1. ESP position speichern
2. meinen konsolenstring auf den stack packen
3. den call aufrufen
4. ESP wieder zurücksetzen.

nur an der umsetzung hapert es :)

wer kann helfen?

danke im voraus!
11/20/2010 20:57 MoepMeep#2
Wie wäre es denn, wenn du die Sprache erstmal lernst?
11/20/2010 21:36 WhiteLionATX#3
etwas umständlich auf der ergebnis zu warten bis ich asm und C++ kann, oder?
einige grundlagen habe ich jedoch bereits, jedoch verstehe/lerne ich dinge in der praktischen anwendung besser.
ich dachte ein supportforum ist dazu da, um in solchen fällen gegenseitige unterstützung zu bieten... und nicht zu sagen: wenn du C++ lernst kannste das selber machen.
ein programmierer drüfte für sowas keine 5 minuten brauchen und viel mehr als 20 - 30 zeilen sinds auch nicht so das ich druf verzichtet habe hier verbuggten code hinzuposten...

Quote:
#include <windows.h>

void SendCommand2Console(char * dCmd)
{
DWORD dwCall = 0x0044ff23 ; //address for sendcommand2console function
__asm
{
PUSH dCmd;
PUSH 0;
PUSH 1;
CALL dwCall;
ADD ESP, 0x0C;
}
}

DWORD WINAPI LoopFunction(LPVOID lpvoid) {
while (true) {
if (GetAsyncKeyState(VK_F5) & 1) {
SendCommand2Console("test command?");
}
}
Sleep(100);

return 0;
}

BOOL WINAPI DllMain(HMODULE hmodule, DWORD reason, LPVOID lpvoid) {
if (reason == DLL_PROCESS_ATTACH) {
DisableThreadLibraryCalls(hmodule);
CreateThread(0, 0, LoopFunction, 0, 0, 0);
}
return TRUE;
}
11/20/2010 23:12 SmackJew#4
Quote:
Originally Posted by WhiteLionATX View Post
etwas umständlich auf der ergebnis zu warten bis ich asm und C++ kann, oder?
Ja die lassen die Medizinstudenten auch immer schon am ersten Tag an jemandem rumschnippeln, ein paar Jahre Studium wären ja "etwas umständlich".

Edit: Wo ist jetzt genau dein Problem? Der Code sieht bis auf die Semikolons im asm Block in Ordnung aus. Und das Sleep sollte in die Schleife, nicht danach.
11/20/2010 23:50 WhiteLionATX#5
ja wahnsinn ... und das nach den ersten übungen, hast du da etwa ein paar jahre für studiert ? warum haben hier alle (zumindest alle die geantwortet haben) das bedürfniss erstmal einen spruch abzugeben der weder hilfreich ist noch sonstwas.
wenn ihr in C++ programmiert und einen autoit snippet braucht, dann im forum als frisch angemeldete seit und fragt... naja wie auch immer, ich hätte euch jedenfalls das teil in schnell fertig geschrieben oder gar nichts gesagt.
es ist ja nicht gerade so als hätte ich das problem nicht beschrieben, mich damit nicht beschäftigt oder das ich ein totaler noob bin ...

zum problem:
was daran nicht geht solltest du doch am besten erkennen und nicht ich als unwissender:
der code geht nicht, ich glaube ich leere den stack nicht richtig oder sowas.
weiterhin weiss ich nicht wie ich ihn so umschreibe, dass ich der dll die commands übergeben kann, und das nicht per hotkey machen muss. (steht aber auch im ersten post)

au man ey und das ein paar stunden nach meiner anmeldung hier im super elite hacking forum ... ich hoffe da gibt noch eine elite die sich nicht nicht gemeldet hat oder wirklich hilft ....
11/21/2010 00:34 Bot_interesierter#6
Ohne weitere Informationen werden wir dir nicht helfen können, ein Dump der Funktion die du zu Callen versuchst wäre nützlich.
Übrigens sollte man in der DllMain keine Threads erstellen, steht ausdrücklich so im DLL best practices paper von Microsoft, das kann in Ausnahmefällen zu bösen unerwarteten Bugs führen, wird hier allerdings eher nicht die Wurzel des Problems sein.
Falls das Programm in welches du injectest abstürzt, dann wäre ein Crashdump auch nützlich.
11/21/2010 00:54 SmackJew#7
Quote:
Originally Posted by WhiteLionATX View Post

zum problem:
was daran nicht geht solltest du doch am besten erkennen und nicht ich als unwissender:
der code geht nicht, ich glaube ich leere den stack nicht richtig oder sowas.
weiterhin weiss ich nicht wie ich ihn so umschreibe, dass ich der dll die commands übergeben kann, und das nicht per hotkey machen muss. (steht aber auch im ersten post)

au man ey und das ein paar stunden nach meiner anmeldung hier im super elite hacking forum ... ich hoffe da gibt noch eine elite die sich nicht nicht gemeldet hat oder wirklich hilft ....
Ich habe dir geschrieben was grundsätzlich daran nicht stimmt, aber die Erklärung "der Code geht nicht" ist einfach nur unglaublich dumm. Erwarte keine Hilfe wenn du so einen Mist schreibst. Hier gibts auch keine Hellseher.