Entwickler-Ecke
Dateizugriff - Trainer in dll auslagern hilfe ersucht.
lullu1 - Sa 29.03.08 21:10
Titel: Trainer in dll auslagern hilfe ersucht.
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 - Sa 29.03.08 21:25
Titel: Re: Trainer in dll auslagern hilfe ersucht.
Am Code musst du AFAIK nichts ändern. Erstell einfach ein DLL-Projekt, kopier diese Prozedur hinein (vor
begin-
end) und setz ein
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.
lullu1 - Sa 29.03.08 21:47
Titel: Re: Trainer in dll auslagern hilfe ersucht.
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.
Delphi-Quelltext
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 - Sa 29.03.08 22:57
Titel: Re: Trainer in dll auslagern hilfe ersucht.
Ich meinte das
begin-
end im DLL-Code, den Delphi automatisch erstellt, nicht das
begin-
end deiner Prozedur :wink: . 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:
Delphi-Quelltext
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. |
lullu1 - So 30.03.08 01:08
Titel: Re: Trainer in dll auslagern hilfe ersucht.
Danke funzt nun^^
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!