Rédaction des formateurs pour les jeux (jeux formateur)

Intro:

Chacun d'entre nous, il y a longtemps ou récemment joué des jeux - conseil, sports, et c est l'introduction à notre vie d'ordinateurs et de l'ordinateur. En raison de leur âge, les habitudes, ou si vous souhaitez tout simplement pour se détendre et remonter le moral après une journée de travail difficile.

Il semblerait que le jeu donne des possibilités illimitées pour la réalisation de soi: en tant que pilote de course, pilote, tueur, ou même un dieu. Mais l'homme est ainsi constitué - d'atteindre une certaine hauteur, il veut encore quelque chose de grand et donc trouve une nouvelle cible ou de nouvelles opportunités.

Il est clair que lors de la création de jeux, les développeurs sont guidés principalement, sinon pour son goût, le goût d'un chef de projet, parfois des statistiques. Mais parfois, je me sens comme dans le but de ralentir les effets de la matrice, le jeu déplacé à Indiana Jones, mais pas le héros le plus agile de l'industrie du jeu - le tueur Hitman, appris à courir sur les murs. Pour ces fins et les formateurs créés.

Théorie:

Trainer (Anglais trainer.) - Un programme conçu pour modifier le comportement du jeu, généralement travailler directement avec la mémoire de l'ordinateur.

Dans les années 1980 et 1990, les entraîneurs habituellement intégrés directement dans le code des jeux de pirates. Lorsque vous démarrez, vous devez d'abord exécuter le formateur avec une boîte de dialogue "Voulez-vous utiliser des astuces?", A été réalisée sur le code du jeu. L'entraîneur a utilisé le nom des signes d'addition (+), un pour chaque option d'entraîneur. Par exemple, «Un groupe de hackers est: Doom +++" - trois options, par exemple, l'immortalité, des munitions infinies, et la téléportation.

En revanche, les entraîneurs modernes, fonctionne généralement comme un programme distinct, avant le match, et leurs noms à l'aide d'un signe plus avec un certain nombre d'options après elle, par exemple, "Doom formateur +15". En outre, les entraîneurs modernes travaillent avec RAM du jeu, pas le fichier exécutable, comme les modifications du fichier exécutable est compliquée par le système de protection contre la copie.

Méthodes:

Pour créer des formateurs utilisés amortisseurs de mémoire, des débogueurs et désassemblé. La meilleure façon de créer un coach - trouver la valeur dans la mémoire, qui coïncide avec l'option de jeu souhaité. Puis changer et regarder dans la liste obtenue à nouveau. Après plusieurs itérations sont susceptibles de rester une petite liste d'adresses, les valeurs sur lesquelles vous pouvez essayer de changer. Il y a beaucoup de services publics tels que: ArtMoney, Cheat'o'Matic - automatiser le processus de recherche et l'évolution des valeurs.

Dans certains cas, la valeur souhaitée du jeu change constamment sa position dans la mémoire. Dans ce cas, nous pouvons essayer de trouver un pointeur vers elle peut-être avec une petite valeur de décalage si le jeu est dans une structure de données. Si le pointeur change de la position dans la mémoire, vous pouvez rechercher pointeur sur le pointeur, etc. Vous pouvez également mettre un terme au point de référence à la valeur du jeu et analyser le code qui lit ou les modifie.

Pour résumer - si ce qui est, DMA? DMA (Dynamic Allocation de mémoire) - est une allocation dynamique de la mémoire. Autrement dit, les jeux DMA, par opposition à des jeux non-DMA, ils utilisent des valeurs stockées dans des adresses de mémoire qui changent après chaque démarrage du jeu. Tous les jeux sous DOS - ne pas utiliser DMA, alors que la plupart des jeux sous Win32 son utilisation.


pratique:

Dans cet article, je vais examiner les formateurs d'écriture pour PRINCIPE DMA et non-DMA jeux. En RUNET très peu d'informations sur ce sujet, des exemples de code existants, les entraîneurs d'écriture ont souvent pas été testés dans la pratique, et peut donc tout simplement confondre les débutants. Tous nous avons besoin est un moyen du langage de programmation Delphi et débogueur tsearch.
  1. Non jeux DMA:

Exécutez tsearch. En appuyant sur Open Process, vyberaem dans la liste que nous sommes intéressés par le processus. Ensuite, nous regardons la liste sont éliminés, puis de déterminer la valeur de l'adresse de l'intérêt. A titre d'exemple, je vais considérer le jeu GTA - Vice City. prametr Intéressé - temps.

Comme vous pouvez le voir, le code à un minimum, je ne pas utiliser les contrôles à l'existence de la fenêtre du programme. Depuis le point afin de minimiser déployer l'application ne peut pas voir, est beaucoup plus pratique de polzovatsyalyubym Joyner et collez le fichier de jeu et formateur ensemble.

 var
 Form1: TForm1;
 NomFenêtre: integer;
 ProcessId: integer;
 ThreadId: integer;
 HandleWindow: Integer;
 écrire: cardinal;

 buf: dword;
 const 
 WindowTitle = 'GTA: Vice City'; 
 Adresse = 0097F266 $; 
 NumberOfbytes = 4; 

 exécution

 {$ R * .dfm}

 procédure s1ow_mode; 
 commencer
 NomFenêtre: = FindWindow (nil, WindowTitle); 
 ThreadId: = GetWindowThreadProcessId (NomFenêtre, @ ProcessId);
 HandleWindow: = OpenProcess (PROCESS_ALL_ACCESS, Faux, ProcessId);
 buf: = 3E90 $;
 WriteProcessMemory (HandleWindow, ptr (adresse), @buf, 4, écriture);
 mettre fin;

 procédure nos1_mode; 
 commencer
 NomFenêtre: = FindWindow (nil, WindowTitle); 
 ThreadId: = GetWindowThreadProcessId (NomFenêtre, @ ProcessId);
 HandleWindow: = OpenProcess (PROCESS_ALL_ACCESS, Faux, ProcessId);
 buf: = 3F80 $;
 WriteProcessMemory (HandleWindow, ptr (adresse), @buf, 4, écriture);
 mettre fin;

 procédure TForm1.Timer1Timer (Sender: TObject);
 commencer
 if (GetAsyncKeyState (VK_LBUTTON) <0>), puis 
 commencer
 s1ow_mode;
 mettre fin;
 if (GetAsyncKeyState (VK_RBUTTON) <0>), puis
 commencer
 nos1_mode;
 mettre fin;
 mettre fin; 


protection:
Si le jeu a un dossier officiel ou jeu de table est pas un réseau, et tous les calculs sont sur le côté serveur, l'existence d'entraîneurs ruiner le jeu. Dans ce cas, il est nécessaire d'incorporer un système de protection contre les entraîneurs, parce que le système de protection contre la copie ne peut pas faire face à cette tâche. Pour ce jeu, les paramètres les plus importants sont chiffrés et déchiffrés pour un court laps de temps avant d'utiliser ou de créer une copie chiffrée de l'original à partir duquel le paramètre est comparé en permanence. Pour contourner ces défenses ne peuvent pas faire sans démonter le programme.