Autor |
Beitrag |
lullu1
Hält's aus hier
Beiträge: 3
|
Verfasst: Sa 29.03.08 21:10
Hi liebe Delphi Gemeinde )
Ich habe seit kurzem mit delphi 7 angefangen coden zu lernen.
So nun habe ich dank des Tuts zum Tema Spiele Trainer erstellen, mir einen funzenden Trainer gebastelt.
Nun möchte ich aber gerne den Trainer als dll erstellen die ich einfach injecte in den Process wo dann die stellen patched werden.
Könnte mir jemand helfen den code für eine dll an zu passen.
Komme leider nicht weiter bei der dll erstellung.
So sieht der code in meinem Trainer exe aus!
Den würde ich gerne als dll nutzen.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure WriteValues4; var c, write : Cardinal; buf: pchar; buf1: pchar; begin c:=FindWindow(nil,'Test'); buf := #$FF#$B5#$54; buf1 := #$8B#$95#$70; if c=0 then begin MessageDlg('Test Anwendung nicht gefunden',mtwarning,[mbOK],0); Exit; end; GetWindowThreadProcessId(c,@c); c:=OpenProcess(PROCESS_ALL_ACCESS,False,c); WriteProcessMemory(c,Ptr($4F8D60),buf,3,write); WriteProcessMemory(c,Ptr($4F8B12),buf1,3,write); CloseHandle(c); end; |
Aufruf in der Exe
Delphi-Quelltext 1: 2: 3: 4:
| procedure TForm0Fly.Button5Click(Sender: TObject); begin WriteValues4; end; |
Moderiert von Narses: Quote- durch Delphi-Tags ersetztModeriert von Narses: Topic aus Sonstiges (Delphi) verschoben am Sa 29.03.2008 um 21:08
|
|
Silas
      
Beiträge: 478
Windows XP Home
Delphi 2005, RAD Studio 2007, MASM32, FASM, SharpDevelop 3.0
|
Verfasst: Sa 29.03.08 21:25
Am Code musst du AFAIK nichts ändern. Erstell einfach ein DLL-Projekt, kopier diese Prozedur hinein (vor begin- end) und setz ein Delphi-Quelltext
darunter.
In der EXE musst du dann die Prozedur folgendermaßen Deklarieren:
Delphi-Quelltext 1:
| procedure WriteValues4; external 'TrainerDll.dll'; |
'TrainerDll.dll' natürlich durch den Namen der DLL ersetzen.
_________________ Religionskriege sind nur Streitigkeiten darüber, wer den cooleren imaginären Freund hat
|
|
lullu1 
Hält's aus hier
Beiträge: 3
|
Verfasst: Sa 29.03.08 21:47
Hi silas
danke für den tip,aber ich schaffe es nicht die dll zu erstellen.
So sieht mein code aus.
Den aufruf aus der exe habe ich verstanden.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43:
| library Project1;
uses SysUtils, Classes;
{$R *.res}
exports WriteValues4;
begin var c, write : Cardinal; buf: pchar; buf1: pchar; begin c:=FindWindow(nil,'Test'); buf := #$FF#$B5#$54; buf1 := #$8B#$95#$70; if c=0 then begin MessageDlg('Test Anwendung nicht gefunden',mtwarning,[mbOK],0); Exit; end; GetWindowThreadProcessId(c,@c); c:=OpenProcess(PROCESS_ALL_ACCESS,False,c); WriteProcessMemory(c,Ptr($4F8D60),buf,3,write); WriteProcessMemory(c,Ptr($4F8B12),buf1,3,write); CloseHandle(c); end;
end. |
Hier die fehlermeldung!
Sorry das ich ich so dumm anstelle ,aber ich habe echt ein verständigungs problem.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| [Fehler] Project1.dpr(19): Undefinierter Bezeichner: 'WriteValues4' [Fehler] Project1.dpr(21): Anweisung erwartet, aber 'VAR' gefunden [Fehler] Project1.dpr(25): Bezeichner redefiniert: 'Finalization' [Fehler] Project1.dpr(26): Undefinierter Bezeichner: 'FindWindow' [Fehler] Project1.dpr(31): Undefinierter Bezeichner: 'MessageDlg' [Fehler] Project1.dpr(31): Undefinierter Bezeichner: 'mtwarning' [Fehler] Project1.dpr(31): Undefinierter Bezeichner: 'mbOK' [Fehler] Project1.dpr(34): Undefinierter Bezeichner: 'GetWindowThreadProcessId' [Fehler] Project1.dpr(35): Undefinierter Bezeichner: 'OpenProcess' [Fehler] Project1.dpr(35): Undefinierter Bezeichner: 'PROCESS_ALL_ACCESS' [Fehler] Project1.dpr(36): Undefinierter Bezeichner: 'WriteProcessMemory' [Fehler] Project1.dpr(38): Undefinierter Bezeichner: 'CloseHandle' [Warnung] Project1.dpr(39): Text hinter dem abschließenden 'END.' wird vom Compiler ignoriert |
|
|
Silas
      
Beiträge: 478
Windows XP Home
Delphi 2005, RAD Studio 2007, MASM32, FASM, SharpDevelop 3.0
|
Verfasst: Sa 29.03.08 22:57
Ich meinte das begin- end im DLL-Code, den Delphi automatisch erstellt, nicht das begin- end deiner Prozedur  . Eine Prozedur in einer DLL erstellst du genau wie in einer EXE, nur dass du anschließend angeben musst, welche exportiert werden sollen.
Außerdem musst du noch die Units einbinden, aus denen du Funktionen verwendest, soweit ich das sehe ist das die Windows und die Dialogs.
So sollte es funktionieren: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36:
| library Project1;
uses SysUtils, Classes, Windows, Dialogs;
{$R *.res}
procedure WriteValues4; var c, write : Cardinal; buf: pchar; buf1: pchar; begin c:=FindWindow(nil,'Test'); buf := #$FF#$B5#$54; buf1 := #$8B#$95#$70; if c=0 then begin MessageDlg('Test Anwendung nicht gefunden',mtwarning,[mbOK],0); Exit; end; GetWindowThreadProcessId(c,@c); c:=OpenProcess(PROCESS_ALL_ACCESS,False,c); WriteProcessMemory(c,Ptr($4F8D60),buf,3,write); WriteProcessMemory(c,Ptr($4F8B12),buf1,3,write); CloseHandle(c); end;
exports WriteValues4;
begin end. |
_________________ Religionskriege sind nur Streitigkeiten darüber, wer den cooleren imaginären Freund hat
|
|
lullu1 
Hält's aus hier
Beiträge: 3
|
Verfasst: So 30.03.08 01:08
|
|
|