07.09.2012, 20:25
(07.09.2012, 01:23)sILeNt heLLsCrEAm schrieb: Die Frage war durchaus ernst gemeint und weder als Angriff noch als Kompliment zu verstehen.
Immerhin ist die Frage durchaus berechtigt... Dein ursprünglicher Sourcecode sieht schon irgendwie nach Flickschusterei aus, wenn ich das mal so ausdrücken darf.
Z.B...
[code=Delphi]procedure TForm1.Button1Click(Sender: TObject);
var
Data: Integer;
begin
Data := 4;
try
ReadProcessMemory(Pidhandle, Pointer(Address), @lBuf, Data, Written);
ReadProcessMemory(Pidhandle, Pointer(lBuf), @lBuf, Data, Written);
ReadProcessMemory(Pidhandle, Pointer(lBuf), @lBuf, Data, Written);
[/code]
Warum deklarierst Du Data erst als Integer und weist diesem dann den Wert 4 zu? Schreib doch z.B. gleich...
[code=Delphi]ReadProcessMemory(Pidhandle, Pointer(Address), @lBuf, 4, Written);
ReadProcessMemory(Pidhandle, Pointer(lBuf), @lBuf, 4, Written);
ReadProcessMemory(Pidhandle, Pointer(lBuf), @lBuf, 4, Written);[/code]
In diesem Sinne...
Wer nach Hilfe fragt bekommt sie auch...
Übrigens - Nachträglich noch herzlich Willkommen hier bei uns im Forum.
grEEtZ sILeNt heLLsCrEAm
Soo also erstmal danke an euch beiden,
Acubra und sILeNt heLLsCrEAm,
für die schönen Erklärungen, ich denke, ich habe das mit den Codecaves und wie man sie macht jetzt verstanden, aber ich glaub ich muss damit jetzt erstmal ein wenig rumprobieren, um das ganze auch umsetzen zu können...
Acubras Tutorial hatte ich mir übrigens schon angeschaut, bevor du den Link dazu gepostet hattest und mit CE hab ichs auch hinbekommen.
Ich hatte nur keine Ahnung, wie man das in Delphi umsetzt.
Muss ich nur noch irgendwo Infos finden, wie man von den Befehlen in ASM auf die entsprechend zu schreibenden Bytes kommt. Zeigt CE die direkt an? Hab da noch nicht so drauf geachtet. bzw nicht nachgeschaut, weil ich damit noch nichts anfangen konnte
Zu deiner Aussage mit dem zusammenschustern geb ich dir vollkommen recht, ich hab mir den Code für das beschreiben einer Adresse aus einem Tutorial rausgesucht und damit rumprobiert. Hab mir mit CE dann nen Pointer rausgesucht und versucht diesen zu beschreiben.
Dazu habe ich mir den Code angeschaut, mir überlegt, wie ich die Offsets darin ubnterbringe(Der Code war im Tutorial nur zum beschreiben einer konkreten Adresse) und den Code ein wenig umgebaut.
Dann bin ich auf den Gamecrash gestoßen und hab hier nach Hilfe gefragt. Deswegen sah der Code da auch noch so nach Flickwerk aus und auch das Data stammt noch aus dem Tutorial...
Aber rein theoretisch finde ich das mit dem Data als Var schon garnicht so verkehrt, weil ich den Code so einfacher in eine Funktion auslagern und ggf erweitern kann... Ich habe bisher nur ein Data von 4 gebraucht, deswegen hab ich den Wert auch fest gesetzt, aber ich könnte ja jetzt in dem Code aus meinem späteren Post das Data:=4 entfernen und Data als Parameter übergeben lassen und die Funktion so auch für variable Werte verwenden.
Ist halt nur noch nicht umgesetzt XD
Hoffe, du verstehst es jetzt, wie ich den Trainer zusammengebastelt bekommen habe. Ich denke mal, wenn ich noch ein wenig mehr Erfahrung habe, wirds auch besser werden... Zumindest hoffe ich es
So dann fällt mir noch ne Frage ein, und zwar zu
ReadProcessMemory(Pidhandle, Pointer(Result), @Result, Data, Written);
bzw auch bei WriteProcessMemory
da habe ich ja die Parameter Data und Written...
Ich habe noch nicht ganz die Bedeutung der beiden Parameter verstanden. Nur das der eine der beiden die Anzahl der zu lesenden/schreibenden Bytes angibt. Und die englische Erklärung in der msdn ist auch recht knapp. Könnte mir dazu mal jemand was erzählen? Wäre echt nice.
LG Darius83
Es gibt 10 verschiedene Typen von Personen, die, die ich mag und die, die ich nicht verstehen kann...