07.09.2012, 01:23
(06.09.2012, 21:19)darius83 schrieb: Wie ich schon sagte, habe ich keine Ahnung wie man mit Delphi eine Codecave bastelt und in deinen geposteten Tutorials stand dazu auch nicht wirklich was drin. Aber ich weiss zumindest jetzt, was damit gemeint ist.Die, bzw. eine Codecave wird ja im eigentlichen Sinne weder mit Delphi oder sonst irgendeiner Programmiersprache geschrieben. Das was durch Delphi und jeder anderen Programmiersprache geschrieben wird sind die entsprechenden Bytes der Codecave und bzw. oder der Sprung zur Codecave. In Delphi kann man das z.B. als Array an die WriteProcess API übergeben.
Das bzw. wie so eine Codecave geschrieben ist halt am einfachsten mit Cheat Engine zu realisieren. Denn damit sucht man sich die entsprechenden Adressen raus, schreibt die Codecave danach wie sie funktionieren soll und schließlich hat man die komplette Bytefolge (das Array) was letzenendlich durch die WriteProcess API geschrieben werden kann. Und das wiederrum kann man eben mit Delphi, VB, C++ etc...
Und da kann ich dir eben das Tutorial von Acubra wärmstens ans Herz legen. Diesem Tutorial liegt auch eine einfache TrainMe.exe bei damit das auch jeder nachvollziehen kann.
Du musst Dir das vielleicht so vorstellen wie Du das in deinem Trainer machst. Dein Trainer schreibt zwar nur 4 Bytes, also den Wert des Geldes, aber so wird auch eine Codecave oder im eigentlichen Sinne die Bytefolge in den Spieleprocess injeziert. Nur eben das die Bytefolge nicht nur 4 Zeichen groß ist. Die Codecave, wie sie im Tutorial von Acubra zu sehen ist, ist insgesamt 15 Bytes groß wenn man mal den NOP am Ende nicht mitzählt.
(06.09.2012, 21:19)darius83 schrieb:Die Frage war durchaus ernst gemeint und weder als Angriff noch als Kompliment zu verstehen.(06.09.2012, 17:22)sILeNt heLLsCrEAm schrieb: Also im Bezug auf diese Aussage frage ich mich ernsthaft wie Du es geschafft hast einen Trainer zu schreiben?!Ich weiss jetzt nicht genau, ob ich das als Angriff oder als Kompliment werten soll... Vielleicht kannst du dich dazu ja nochmal äussern...
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
Irren ist menschlich. Aber wer richtigen Mist bauen will, braucht einen Computer !!!
Traineranfragen per PM werden prinzipiell gelöscht...
Traineranfragen per PM werden prinzipiell gelöscht...