Register for your free account! | Forgot your password?

Go Back   elitepvpers > Off-Topics > Tutorials
You last visited: Today at 15:39

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Trainer Tutorial

Discussion on Trainer Tutorial within the Tutorials forum part of the Off-Topics category.

Reply
 
Old   #1
 
lppascal2007's Avatar
 
elite*gold: 0
Join Date: Oct 2009
Posts: 42
Received Thanks: 17
Trainer Tutorial

Sorry wenn wer anders schon mal einen thread zum gleich thema auf gemacht hat (hab nicht wirklich nachgeschaut) so aber jetzt zum Tut.:

Worum geht es hier ?

Dieses Tutorial soll euch zeigen wie man einen Trainer für ein Spiel macht.
Daher ich nur Starcraft und CS installiert habe wird es in diesem Tutorial
um einen Starcraft Trainer gehen.

Was benötige ich um das Tutorial zu verfolgen ?

1.) Einen ASM Compiuler oder einen C++ Compiler mit Inline ASM
2.) Eine API Referenz wie z.b. das MSDN
3.) Starcarft
4.) Und Olly Debug (Ich weiss viele Cracker bevorzugen SoftIce aber ich halt nicht :-P)


Was ist ein "Trainer" ?

Das ist im Grunde auch ein Cheat. Diese Art der cheats waren sehr weit verbreitet zu DOS/C64
und Amiga Zeiten. Es gabe sogar mal trainer für Konsolen (SNES und SMD-> Replay X ).
Was dieser Cheat macht ist euch mehr Mineralien zu geben.


Kann ich einfach offsets patchen ?

Normalerweise ist es unter Windows9x/NT nicht erlaubt auf andere Prozesse zuzugreifen.
Glücklicherweise hat Microsoft aber ein paar Funktionen eingebaut welche eigentlich zum
Debugen gedacht waren. Und genau diese Funktionen werden wir nun für unsere Zwecke ver-
wenden.
Hier sind die Namen:

OpenProcess //Diese Funktion öffnet uns ein Handle zu dem Prozess den wir Modden wollen
WriteProcessMemory //Diese Funktion schreibt unsere Daten in einen bereitslaufenden Prozess
ReadProcessMemory //Diese Funktion liest Daten aus einen fremden Prozess aus.

Im Grunde wird unser Programm sich wie ein Debugger verhalten. D.H. auf den Speicherplatz anderer
Programme zugreifen und diese verändern.

Wie ist so ein Programmaufgebaut ?

1.) Intro (Einfach eine kleine MessageBoX )
2.) Das "erhalten" der Process ID der Programms welches wir modifizieren möchten.
3.) OpenProcess
4.) Werte verändern
5.) Das Handle Schließen und Beenden



Erklärung des verwenden der API Funktionen:



Das erhalten des Fenster Handle's:

Um das Fenster Handle zu bekommen verwenden wir FindWindowA.Diese Funktion gibt uns ein handle zurück und
"will" als Parameter den Fensternamen("Starcraft") und die Fensterklasse ("SWarrClass").(Wir können den
Klassennamen eines Fensters mit SoftICE rausfinden(TASK->HWND).

Mit dem Fensterhandle können wir uns die entsprechenden Prozesse hohlen.
Oder die PID in dem wir GetWindowThreadProcessId benutzen.
Dann hohlen wir uns natürlich ein neues Handle mit openprocess in dem wir dann unsere gewünschten
Attribute selbst angeben.

Alles wird jetzt leichter. Denn jetzt können wir WriteProcessMemory benutzen um die gewünschten änderungen
am Prozess vornehmen.

Dann schliessen wir das handle mit Colsehandle und rufen ExitProcess auf.


Die Speicheradressen:


Wir können sehr leicht an die Speicheradressen wie z.B. Mineralien ran kommen indem wir einen Debugger
verwenden. Dazu würde ich Olly Debug empfehlen.

Mineralien = 04EFE08h
VespinGas = 04EFE38h




Der Source code (ASM)


.386P ;Umgebungseinstellungen für den Assembler
Locals
jumps


.Model Flat ,StdCall ; bestimmen des Stackmodels
PROCESS_VM_WRITE equ 020h ; Flags für Schreibzugriff
PROCESS_VM_OPERATION equ 008h ; zu dem Prozess

mb_ok equ 0 :
minerals_pos equ 04efe08h ; Adresse für Mineralien
gas_pos equ 04efe38h ; Adresse für VespinGas


; Setzten der Prototypen der zuverwendenden API Funktionen und der Variablen

extrn MessageBoxA : PROC ; Messagebox
extrn FindWindowA : PROC ; Funktion um das Fensterhandle zubekommen
extrn GetWindowThreadProcessId roc; Funktion um die PID zubekommen
extrn OpenProcess : PROC ; Funktion um auf den Prozess zugreifen zu können
extrn WriteProcessMemory: PROC ; Funktion um unsere werte in das Programm zuschreiben
extrn CloseHandle : PROC ; Funktion um das Hanlde zu schließen
extrn ExitProcess : PROC ; Funktion zum beenden des Programmes


; Hier fängt unser Programm an
.Data


caption db "_masta_'s essay on Win32-ASM-Coding, part 2",0 ; Überschrift, 0-terminated

text db "Hi, here we are at part 2",13,10
db "This tut will describe you how to make",13,10
db "Win32-ASM Trainer",0 ; Introtext , 0-terminated

err_cap db "ERROR",0 ; Überschrift
notrun db "Sorry, Starcraft is not running",0 ; Fehler wenn Starcarft nicht läuft
no_write db "Mmmhhhh, a problem, by writing",13,10 ; Zugriffsfehler
db "to Starcrafts memory",13,10,0 ;
readycap db "Ready",0 ; Überschrift
readytxt db "Ok, now you have 1000000 Minerals and Gas",0 ; Erfolgsmeldung

million dd 1000000 ; Neuer Wert für die Resourcen
dd 1000000

wnd_name db "Starcraft",0 ; Name des Starcraft-Fensters
cls_name db "SWarClass",0 ; Klasee vom Starcraft-Fenster

pid_sc dd ? ; hier wird die PID gespeichert ...
p_hand dd ? ; und hier das Handle


; Und hier fängt unser Code an
.Code
Main:
; Da das Stacksegment ein LIFO Register ist werden die Parameter in umgekehrter
; Reinfolge übergeben
push mb_ok ; Ok - Button für unsere MessageBox
push offset caption ; Überschrift
push offset text ; MessageBox Inhalt
push 0 ; Kein extra parameter
call MessageBoxA ; Startnachricht

is_SC_RUN:

push offset wnd_name ; Übergeben das Fensternamens
push offset cls_name ; Übergeben des Klassennamens
call FindWindowA ; Finden des Fensters

cmp eax,0 ; Wenn eax NULL ist dann exestiert das Fenster nicht
jz SC_isnt_run_end ; Benachrichtigen des Users das Startcraft nicht gefunden wurde

push offset pid_sc ; Offset für die PID
push eax ; Übergeben des Fensterhandels
call GetWindowThreadProcessId ; Aufruf der Funktion

open_the_process:

push pid_sc ; Übergeben der PID
push 0 ; 0 da wir keinen neuen Prozess erstellen
push PROCESS_VM_WRITE OR PROCESS_VM_OPERATION ; Aktivieren der Schreibrechte
call OpenProcess ; Erhalten des Handles
mov p_hand,eax ; Speichern des handles zu p_hand

change_Minerals:

push 0 ; wird Nicht benötigt
push 8 ; Größenangabe des 8 Bytes großen wertes 1.000.000 (2 Dwords)
push offset million ; Offset zu den Mineralienwert den wir in StarCraft schreiben
push minerals_pos ; Speicheradresse der Mineralien in StarCraft
push p_hand ; Handle zum Prozess
call WriteProcessMemory ; Ausführen des Schreibvorgangs
cmp eax,0 ; Hat der Schreibvorgangs geklappt ?
jz error_on_write ; Wenn es einen Fehler gegeben hat dann benchrichtigen wir den User

change_gas:

push 0 ; wird Nicht benötigt
push 8 ; Größenangabe des 8 Bytes großen wertes 1.000.000 (2 Dwords)
push offset million ; Offset zu den t den wir in StarCraft schreiben
push gas_pos ; Speicheradresse des Vespin Gases in StarCraft
push p_hand ; Handle zum Prozess
call WriteProcessMemory ; Ausführen des Schreibvorgangs
cmp eax,0 ; Hat der Schreibvorgangs geklappt ?
jz error_on_write ; Wenn es einen Fehler gegeben hat dann benchrichtigen wir den User

Trainer_ready:

push mb_ok ; Ok-Button für die MessageBox
push offset readycap ; Offset für den Überschrifts String
push offset readytxt ; Offset für dem MessageBox Inhalt
push 0 ; nicht benötogt
call MessageBoxA ; Oki alles hat Hingehauen (weeeeeeeeeee)

close_the_PID_Handle:

push p_hand ; Übergeben des Handles
Call CloseHandle ; Schließen des Handles
jmp end_ ; Und auf zum Ende

error_on_write:

push mb_ok ; OK Button bei der MessageBox
push offset err_cap ; Überschrift
push offset no_write ; FehlerMeldung
push 0 ; Wiedermal 0
call MessageBoxA ; Aufrufen der MessageBox
jmp close_the_PID_Handle ; Schließen des Handels bevor wir Beenden

SC_isnt_run_end:

push mb_ok ; OK Button bei der MessageBox
push offset err_cap ; Überschrift
push offset notrun ; FehlerMeldung
push 0 ; immer noch 0
call MessageBoxA ; StarCraft ist nicht präsent

end_:


CALL ExitProcess ; Beenden unseres Programmes
End Main

Spezielle Anmerkung :
Dieser Trainer Funktioniert Grundsätzlich mit jedem Spiel alles was ihr machen müsst um ihn auf ein anderes Spiel
zu Übertargen ist die neuen Offsets rausfinden und diese mit den Bestehenden zu ersetzen.

Mfg LPP.

Tutorial by _masta_
lppascal2007 is offline  
Thanks
2 Users
Old 05/12/2010, 15:58   #2
 
elite*gold: 0
Join Date: Apr 2010
Posts: 2
Received Thanks: 0
N!ce work von mir bekommst mal ein Thanks
lpmarcel2007 is offline  
Old 05/12/2010, 16:23   #3
 
Kanachri's Avatar
 
elite*gold: 61
Join Date: Nov 2009
Posts: 7,014
Received Thanks: 2,245
^*hust doppelaccount *hust
Ich finds nicht sehr gut.Das ist total unübersichtlich etc.
Kanachri is offline  
Old 05/12/2010, 16:27   #4
 
lppascal2007's Avatar
 
elite*gold: 0
Join Date: Oct 2009
Posts: 42
Received Thanks: 17
nichts doppelaccount, gib mir mal nen tipp wie ich´s besser machen könnte
lppascal2007 is offline  
Old 05/12/2010, 21:35   #5
 
LaFantastique's Avatar
 
elite*gold: 1
Join Date: Mar 2010
Posts: 1,368
Received Thanks: 218
Du könntest die Überschriften fett machen oder unterstreichen

Oder für codes
Code:
Hier steht dein Code
LaFantastique is offline  
Old 05/13/2010, 07:26   #6
 
elite*gold: 0
Join Date: Feb 2008
Posts: 3,038
Received Thanks: 1,581
nice c/p, schreib wenigstens credits hinzu..

thx < no
0x1337 is offline  
Old 05/13/2010, 07:56   #7
 
lppascal2007's Avatar
 
elite*gold: 0
Join Date: Oct 2009
Posts: 42
Received Thanks: 17
credits sind dran....wie soll ich das mit codes machen wird dann bisschen unübersichtlich

Mfg Pascal
lppascal2007 is offline  
Reply

Tags
art money, trainer, tutorial


Similar Threads Similar Threads
[Tutorial] Trainer Visual Basic 6
04/28/2012 - Coding Tutorials - 7 Replies
Hallo, das Tutorial habe ich in MPGH gefunden und wollte es hier nun mal schreiben. Dies ist auch auf Deutsch :). Was man braucht: Visual Basic 6 Hex Codes (Cheat Engine Codes) Finger Gehirn
[Tutorial mal anders] Trainer mit vb.net
08/09/2010 - Coding Tutorials - 3 Replies
Hallo ihr coder, ich habe gohofft das hier mit eurer hilfe ein Tutorial entsteht um einen Trainer zu erstellen. Ja, ich selber habe so gut wie keine ahnung XD. Hab mir das so vorgestellt das es einfach schritt für schritt erstellt wird. Somit wäre dies ein super tut für beginner. Erstmal vorweg die frage: Würden sich daran welche beteiligen?
Trainer Tutorial
07/04/2010 - Coding Tutorials - 12 Replies
Hi , da ich keine Lust habe mir Adressen rauszusuchen und gerade eh kein 4Story auf dem Rechner habe , schreibe ich einfach mal ein simples Tutorial , wie ihr einen 4Story Trainer erstellen könnt.:handsdown: Der Trainer , wird am Beispiel von Pinball von Micisoft erklärt. Da dies ein Tutorial , ist solltet ihr gründlich und genau lesen. Ich werde es extra nicht an 4Story erklären , damit ihr selbst den Source schreiben müsst ! 1. Was brauche ich ?
[AutoIt] Trainer Tutorial
06/19/2010 - AutoIt - 7 Replies
Hallo alle zusammen, ich zeige euch jetzt wie man mit Autoit Trainer erstellt. Als erstes was ist ein Trainer:Es ist ein einfaches Programm das von bestimmten Adressen im Arbeitspeicher die Values (Werte) verändert. Was brauchen wir: 1.Autoit ----> google 2.Cheat Engine ----> google 3.NomadMemory.au3 ----> Lesen 4.Ein Spiel ----> eBay
CHEAT ENGINE TRAINER TUTORIAL?
02/26/2010 - S4 League - 8 Replies
how can i make trainers via cheat engine D:?, the injector exists but not the bases to make our own hacks D: and the CE tables here are outdated D:... thanks ;3



All times are GMT +1. The time now is 15:40.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.