This page has been robot translated, sorry for typos if any. Original content here.

Rédaction de formateurs pour les jeux (entraîneur de jeux)

Intro:

Chacun de nous quand, il ya longtemps ou récemment, nous avons joué à des jeux - jeux de table, sports, et avec l'introduction de la technologie informatique dans nos vies et dans les jeux informatiques. En raison de son âge, de ses habitudes, ou tout simplement envie de se détendre et de remonter le moral après une dure journée de travail.

Il semblerait que le jeu donne des possibilités illimitées pour la réalisation de soi: en tant que pilote, pilote, tueur ou même dieu. Mais une personne est ainsi arrangée - atteignant une certaine hauteur, il veut toujours quelque chose de plus et trouve donc un nouveau but ou de nouvelles opportunités.

Il est clair que lors de la création de jeux, les développeurs sont principalement guidés, sinon par leurs propres goûts, par le goût du chef de projet, parfois par des statistiques. Mais après tout, vous voulez parfois que les effets de la modération de la matrice pour entrer dans le jeu Indiana Jones, et pas le héros le plus agile de l'industrie du jeu - hitman hitman, a appris à courir autour des murs. Pour ce faire, les formateurs sont créés.

Théorie

Trainer (anglais formateur) - un programme conçu pour changer le comportement du jeu, travaillant généralement directement avec la RAM de l'ordinateur.

Dans les années 1980 et 1990, les entraîneurs étaient généralement intégrés dans le code du jeu par les hackers. Au début, l'entraîneur avec la boîte de dialogue "Voulez-vous utiliser des tricheurs?" A été démarré en premier, le code du jeu a été continué. Au nom de l'entraîneur utilisé des signes d'addition (+), un pour chaque option de l'entraîneur. Par exemple, "The Hacker Group présente: Doom +++" - trois options, par exemple, l'immortalité, les munitions infinies et la téléportation.

Les entraîneurs modernes, habituellement exécutés comme un programme séparé, avant le jeu, et dans leurs noms utilisent un signe d'addition avec le nombre d'options après lui, par exemple, "Doom Trainer +15". En outre, les formateurs modernes fonctionnent avec la RAM du jeu, et non avec son fichier exécutable, car les modifications apportées au fichier exécutable sont compliquées par les systèmes de protection contre la copie.

Méthodes:

Pour créer des baskets, des amortisseurs de mémoire, des débogueurs et des désassembleurs sont utilisés. La façon la plus simple de créer un coach est de rechercher une valeur dans la mémoire qui correspond au paramètre de jeu désiré. Puis changez-le et effectuez une nouvelle recherche dans la liste résultante. Après quelques itérations, il restera très probablement une petite liste d'adresses, valeurs pour lesquelles vous pouvez essayer de changer. Il existe de nombreux utilitaires tels que: ArtMoney, Cheat'o'Matic - l'automatisation du processus de recherche et de modification des valeurs.

Dans certains cas, la valeur de jeu souhaitée change constamment sa position dans la mémoire. Dans ce cas, vous pouvez essayer de trouver un pointeur avec un léger décalage, si la valeur du jeu est dans une structure de données. Si le pointeur change également la position en mémoire, vous pouvez rechercher un pointeur sur ce pointeur, etc. Vous pouvez également définir des points d'arrêt sur les appels à la valeur du jeu et analyser le code qui les lit ou les modifie.

Résumons - alors qu'est-ce que c'est, DMA? DMA (Dynamic Memory Allocation) est une allocation de mémoire dynamique. Autrement dit, les jeux DMA, contrairement aux jeux non-DMA, stockent les valeurs qu'ils utilisent pour les adresses mémoire qui changent après le début de chaque partie. Tous les jeux sous DOS - n'utilisez pas DMA, alors que la plupart des jeux sous Win32 l'utilisent.


Pratique:

Dans cet article, je vais examiner les principes de l'écriture des formateurs pour les jeux DMA et non-DMA. En runet très peu d'informations sur ce sujet, les échantillons de code déjà disponibles, les rédacteurs d'écriture ne sont souvent pas testés dans la pratique, et peuvent donc simplement confondre les nouveaux arrivants. Tout ce dont nous avons besoin est le langage de programmation Delphi et le débogueur TSearch.
  1. Pas un jeu DMA:

Démarrer TSearch. En cliquant sur Ouvrir un processus, sélectionnez le processus qui nous intéresse. Ensuite, en utilisant la recherche que nous recherchons, nous filtrons, puis déterminons l'adresse de la valeur d'intérêt. A titre d'exemple, je vais considérer le jeu GTA - Vice City. L'heure intéressée est l'heure.

Comme vous pouvez le voir, le code est au minimum, je n'ai pas utilisé les contrôles pour l'existence de la fenêtre du programme. Puisque le sens de pliage-dépliage de l'application ne se voit pas, il sera beaucoup plus pratique d'utiliser n'importe quel joeyer et de coller le fichier de jeu et l'entraîneur en un seul.

 var
 Formulaire 1: TForm1;
 WindowName: entier;
 ProcessId: entier;
 ThreadId: integer;
 HandleWindow: Entier;
 écrire: cardinal;

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

 implémentation

 {$ R * .dfm}

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

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

 procédure TForm1.Timer1Timer (expéditeur: TObject);
 commencer
 if (GetAsyncKeyState (VK_LBUTTON) <> 0) alors 
 commencer
 s1ow_mode;
 fin;
 if (GetAsyncKeyState (VK_RBUTTON) <> 0) alors
 commencer
 nos1_mode;
 fin;
 fin; 


Protection:
Si le jeu a une table officielle d'enregistrements ou si le jeu est en réseau et que tous les calculs ne sont pas du côté serveur, alors l'existence d'entraîneurs ruine le jeu. Dans ce cas, vous devez intégrer le système à la protection des entraîneurs, car les systèmes de protection contre la copie ne peuvent pas faire face à cette tâche. Pour ce faire, les paramètres de jeu les plus importants sont cryptés et décryptés pendant une courte période avant utilisation ou une copie cryptée est créée avec laquelle le paramètre d'origine est constamment comparé. Pour contourner ces protections, vous ne pouvez pas vous passer du démontage du programme.