Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 05:43

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Trainer programmieren
BeitragVerfasst: Di Sep 07, 2004 16:29 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 16, 2003 15:20
Beiträge: 198
N'Abend,
ich hab gerade spaßeshalber mal Minesweeper und einige andere Programme mit einem Memory-Trainer modifiziert um eine bessere Highscore zu kriegen (keine Sorge ich hab und werde mich nie an Netzwerk- und Interhighscore-spielen versuchen, dass ist unfair ;-)), leider ist das Prog, das ich verwendet hab 'ne 30-Tage Version. Also hab ich mir gedacht, versuch ich doch einfach mal selbst eins zu schreiben. Nun zu meiner Frage :
Wie kann ich mit einem Delphi-Programm den Stack (und sonstigen Arbeitsspeicher, aber nicht den SourceCode im Arbeitsspeicher) durchsuchen und modifizeren ?

_________________
Bevor du definierst, was etwas ist, versichere dich seiner Existenz.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 07, 2004 17:23 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Mai 27, 2002 16:29
Beiträge: 77
Wohnort: Düsseldorf
Mit ReadProcessMemory und WriteProcessMemory kannst du wild im Speicher von einem anderen Prozess arbeiten, wenn du ihn voher mit OpenProcess geöffnest hast.
Um den Stack zu lesen gibt es die Funktion StackWalk, aber dafür musst du anscheinend einen Stackframe kennen, und es kann sein die nur mit geht wenn Debuginformationen vorhanden sind.
Und mit API Hooking kannst du die Speicherallokierungsfunktionen hooken, dann hast du eine Liste mit allen Speicheradressen im Heap.

_________________
Probleme sind zum Lösen da


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 07, 2004 20:03 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 16, 2003 15:20
Beiträge: 198
Irgendwie versteh ich das immer noch nicht so ganz, wie kann man den mit OpenProcess eine andere Anwendung öffnen (irgendwo muss man doch den Pfad übergeben können ...) ???
Und wie erstelle ich einen API-Hook (wie einen Normalen Hook, in einer DLL, nur mit einem anderen Parameter) ??

_________________
Bevor du definierst, was etwas ist, versichere dich seiner Existenz.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Sep 10, 2004 13:21 
Offline
DGL Member

Registriert: Di Okt 29, 2002 21:20
Beiträge: 30
Nein, mit OpenProcess öffnest du einen bereits laufenden Prozess.
Dazu brauchst du aber die ProcessID, die du folgendermaßen bekommst:

1. Mit FindWindow das entsprechende Fenster suchen und dessen Handle bekommen
2. Mit dem Handle kannst du dann GetWindowThreadProcessID aufrufen, welches dir wiederum die "ProcessID des Fensters" zurückliefert
3. Da du jetzt die ProcessID des Programmes hast, kannst du mit Openprocess auf den Speicherbereich des Programmes zugreifen

Das ist jetzt nur grob beschrieben, genauere Infos gibts unter www.gamehacking.com -> Articles

Allerdings wirst du, wenn du ernsthaft Trainer programmieren willst, ohne Assembler Kenntnisse nicht weit kommen. Denn einfach nur Werte im Speicher modifizieren oder "einfrieren" bringt einen bei aktullen Spielen nicht mehr weit.

_________________
Knowledge is Power - So ask if you want to become powerful


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Sep 10, 2004 18:42 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Klangt interessant. Könntet Ihr mich mal aufklären was ein Trainer ist?
Denke kaum, dass ihr euch für Männer mit Trainingsanzug und Pfeife interessiert, oder? :wink:

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Sep 11, 2004 12:03 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
Ein Trainer ist ein Cheat-Programm, das man während oder vor dem Spielen anwirft und mit dem man irgendwelche Attribute aufbessern oder festfrieren kann. Zumindest läuft so der typische Trainer, der einzige sinn ist zu Betrügen ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Sep 11, 2004 13:49 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Mach dir doch eine DLL die die ganzen OpenGL Funktionen abfängt und weiterleitet. Bei HL geht das ziemlich einfach, weil man die OpenGL DLL im Menü auswählen kann. Da kann man dann schöne Sachen mit machen. Man bekommt ja alle Funktionsaufrufe und kann dementsprechend auch eingreifen. MotionBlur Detailtexturen oder das Ersetzen von Texturen dürfte recht einfach zu realisieren sein. Das sinnvollste ist aber bei glClear das GL_COLOR_BUFFER_BIT zu setzen und dann glPolygonMode(GL_FRONT_AND_BACK,GL_LINE) aufzurufen.
So ein Grundgerüst habe ich vor längerer Zeit mal gemacht. Ob's mit der aktuellen Version noch funktioniert, weiß ich nicht. Ich hatte früher damit auch mal MotionBlur hinzugefügt, aber da der Accumulation Buffer damals noch nicht durch die HW unterstützt wurde, war die Geschwindigkeit sehr langsam.


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 14 Queries | GZIP : On ]