In Speicher von anderem Programm schreiben
-
Ich kenne den Dateinamen des Programms, die Spiecheraddressen, und die Werte die Eingetragen werden sollen.
Ich benutze als Compiler und zum Erstelen des Codes den C++ Builder 6 von Borland auf Windows XP.
Ich würde mich freuen, wenn ich mir nicht auf Funktionsreferenzen verweist, sondern direkt den Wichtigen Teil postet.
Auf Tutorials könnt ihr mich gerne Verweisen.Danke im Voraus.
-
hier das gewünschte tutorial:
http://derentwickler.de/itr/online_artikel/psecom,id,434,nodeid,56.html0,11 sekunden google suche hats gedauert --> "speicher fremder prozess schreiben" - das kannst du auch
also beim nächsten Mal bitte Arsch hoch, Motivation zeigen und nicht um fertige Codebeispiele betteln.
-
Ich bin mir nicht ganz sicher, ob das dass ist, was ich suche...
Ich möchte keine DLL erstellen, sondern eine exe.
Ich stelle mir das so vor, wie diese Programme, die z.B. das Leben in spielen erhöhen.
-
Dieser Thread wurde von Moderator/in akari aus dem Forum VCL/CLX (Borland C++ Builder) in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
speedtouch92 schrieb:
Ich möchte keine DLL erstellen, sondern eine exe.
[...] müssen in einer DLL implementiert werden, da nur eine DLL in der Lage ist, sich in Adressbereiche anderer Anwendungen etc. einzublenden.
-
Adressen und Werte sind ja bekannt :
OpenProcess ()
WriteProcessMemory ()
-
das hilft auch weiter:
VirtualProtectEx()MfG
RadiatioN
-
Da ich gerade nichts zu tun habe, versuche ich es mal schön ausführlich zu erklären
Ersteinmal müssen wir das Programm finden.Unszwar machen wir das mit Findwindow().
Beispiel:HWND hWindow = FindWindow(NULL, "deinprogramm");
Anstatt "deinprogramm" schreibst du natürlich den Fensternamen des Programmes hin.
Jetzt haben wir aber noch keinen Zugang zum Programm.Um dies zu ändern brauchen wir zunächst die PID (Process ID).
Diese PID holen wir uns mit GetWindowThreadProcessId()
Beispiel:long PID; // hier werden wir die PID speichern. GetWindowThreadProcessId(hWindow, &PID);
Jetzt holen wir uns mit der folgenden Funktion den Zugriff aufs Programm:
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCES, TRUE, PID);
Jetzt brauchen wir nurnoch einen Buffer, wo wir den Wert, der eingetragen werden soll reinspeichern.Dann werden wir den Wert mit WriteProcessMemory() übergeben.
Zuletzt werden wir noch den handle hProcess schließen, den wir für den Zugriff zum Programm geöffnet haben.WriteProcessMemory(hProcess, (LPVOID)0x00000000, &Buffer, sizeoff(Buffer), 0); CloseHandle(hProcess);
(Anstatt den ganzen 0 bei 0x00000000 schreibst du natürlich deine Adresse rein)
Das war`s eig. auch schon.Zum Schluss könnte das wie folgt aussehen:#include "windows.h" int main() { long PID; DWORD Buffer = { 123456789 }; HWND hWindow = FindWindow(NULL, "deinprogramm"); if (!hWindow) { MessageBox(0, "Programm wurde nicht gefunden!", 0, MB_ICONERROR); return 0; } GetWindowThreadProcessId(hWindow, &PID); HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, TRUE, PID); WriteProcessMemory(hProcess, (LPVOID)0x00000000, &Buffer, sizeof(Buffer), 0); CloseHandle(hProcess); return 0; }
Wenn du genaueres zu den Funktionen wissen willst --> MSDN
(Ich hoffe das funzt jetzt auch alles und ich habe nichts vergessen, habs nämlich jetzt nicht getestet..)
-
zieh dir mal die zwei tutorials rein Teil 1 & teil 2 dort wird genau beschrieben wies geht und was wo passiert