human
Comment fonctionnent les dispositifs de codes de triche de jeux vidéo ( Action Replay / Gameshark ) ? Que fait exactement l'appareil pour créer un environnement de code de triche ? S'il vous plaît, expliquez-moi comme si j'avais cinq ans.
gpt
Le type de code le plus basique que vous programmeriez dans l'appareil est un code d'écrasement de RAM. L'exemple le plus simple de ceci serait une tricherie d'argent infini. Les développeurs travaillant pour AR ou Gameshark chargent le jeu sur n'importe quel matériel de développement dont ils disposent et jouent un peu. Finalement, ils prendraient note de combien d'argent le jeu dit qu'ils ont, et prendraient également un instantané du contenu de la RAM. Ensuite, ils pourraient aller acheter des trucs et prendre un autre cliché. À ce stade, ils pourraient effectuer une recherche dans l'instantané de la RAM pour connaître la valeur de l'argent que le jeu affichait lorsqu'il a été pris (disons 1 000 $). Cela leur donnerait tous les emplacements RAM contenant la valeur 1000 . En faisant de même pour le deuxième instantané, ils obtiendraient tous les emplacements contenant 800 (par exemple). Une simple référence croisée devrait donner les emplacements dans la RAM qui contiennent une référence à la valeur de l'argent dont dispose actuellement le joueur. S'il y a beaucoup de résultats, plus d'instantanés aideraient à les réduire. S'il y a encore plusieurs résultats après la mise en corrélation de plusieurs instantanés, cela signifie probablement que le rapport qualité-prix est stocké à plusieurs endroits. Cela peut être dû au fait que l'une est une valeur "sauvegardée" et l'autre une valeur "de travail", ou que la valeur est copiée à un moment donné pour le calcul, mais qu'elle n'est pas écrasée par quelque chose d'autre lorsque le calcul est terminé, ou que le jeu a une sorte de valeur. du système de vérification des erreurs où toutes les valeurs doivent correspondre. À ce stade, le développeur de triche commencerait à jouer avec ce qui se passe lorsque les valeurs sont modifiées manuellement. Une fois qu'ils ont déterminé quels emplacements RAM contrôlent réellement la valeur de l'argent, ils prennent ces emplacements, ainsi qu'une certaine valeur (disons 9999 par exemple), et créent un code d'écrasement RAM. Lorsque vous programmez ce code dans votre appareil de triche , il ordonne à l' appareil d' écraser périodiquement ( plusieurs , plusieurs fois par seconde ) la valeur qui se trouve dans ces emplacements RAM avec 9999 . Ainsi, lorsque le joueur va acheter quelque chose, la nouvelle valeur de l'argent est calculée pour l'achat, mais peu de temps après, le dispositif de triche réécrit la valeur comme si cela ne s'était jamais produit. Le code lui-même que vous programmez dans l'appareil de triche contient juste une valeur indiquant le type de code (RAM Overwrite dans notre exemple ci-dessus), l'adresse RAM à écraser et la valeur avec laquelle écrire. En outre, la plupart des entreprises prendront le code et le chiffreront afin que seul le dispositif de triche puisse le déchiffrer et comprendre ce que le code est censé faire. Cela protège juste le travail qu'ils ont mis dans le développement de la triche. Un autre type de code important est le code Enable , et il est un peu plus difficile . Avec la plupart des appareils de triche, vous devez avoir un code d'activation pour utiliser d'autres astuces pour le jeu. Cela rejoint notre exemple ci-dessus où nous avons parlé d'emplacements de RAM écrasés plusieurs fois par seconde. Faire cela n'est en fait pas si simple. Le dispositif de triche n'a pas du tout accès à la RAM, pas pendant que le jeu est en cours d'exécution. La seule chose qu'il peut faire est que, lorsqu'une demande est faite pour obtenir des données en lecture seule de la cartouche (code à exécuter, données graphiques, données audio, etc.), le dispositif de triche peut l'intercepter et envoyer autre chose à la place. Pour accéder à la RAM, le dispositif de triche a besoin d'un crochet, un mécanisme par lequel il peut commencer à insérer son propre code exécutable dans le code du jeu. Pour ce faire, le développeur de triche doit trouver un endroit dans le code du jeu pour insérer le crochet, ce qui impliquera probablement de remplacer une instruction de jeu (ou plusieurs) par une autre instruction (ou plusieurs) qui tentera d'accéder à la cartouche d'une manière ou d'une autre. que le dispositif de triche reconnaîtra. Cela ne peut être fait qu'avec expertise , car trouver un bon point d' accroche implique de trouver un code de jeu qui est exécuté très fréquemment , qui peut être modifié sans interrompre le jeu , et qui peut supporter d' être arrêté pendant des périodes de temps significatives ( tandis que le dispositif de triche exécute son code ) sans affecter les performances ou la réactivité du jeu . Par exemple, le développeur de triche pourrait utiliser une section de code qui vérifie l'état des boutons de la manette, pour voir si l'un d'entre eux a été pressé, ce dont presque tous les jeux ont besoin. Cela s'exécute très souvent, mais jouer avec cela pourrait affecter la réactivité du jeu aux pressions sur les boutons, et le joueur pourrait avoir l'impression que le jeu est lent. Le code d'activation lui-même contiendra les éléments suivants. (A) Informations pour la ou les instructions de hook telles que lors de toute lecture normale de la cartouche, si l'instruction de hook fait partie de la lecture, le dispositif de triche échangera automatiquement l'instruction du jeu contre l'instruction de hook et l'enverra à la place. ( B ) Facultativement , comme cela peut ne pas être différent d' un jeu à l' autre , des informations sur l' " opération spéciale " que l' instruction hook effectuera , qui signale au dispositif de triche qu'il doit commencer à envoyer son propre code exécutable à Être exécuté . ( C ) Facultativement , des informations sur l' endroit où le code du dispositif de triche sera chargé dans la RAM . Exécuter à partir de la RAM par opposition à la ROM est beaucoup, beaucoup plus rapide et moins susceptible de causer des problèmes de "décalage" comme décrit ci-dessus, mais nécessite qu'il y ait suffisamment d'espace dans la RAM pour charger tout le code, sans affecter le jeu. ( D ) Facultativement , des informations sur les instructions remplacées par le crochet , qui peuvent encore devoir être exécutées d' une manière ou d' une autre . Encore une fois, c'est encore une image assez basique du genre de choses que font les appareils de triche. Tout ce qui précède suppose, par exemple, que le jeu ne contient aucun type de mesures anti-triche. La série Pokemon est probablement la plus connue pour son anti-triche. Les Pokémon individuels que vous avez capturés sont constitués de blocs de mémoire de 100 octets (dans la génération 3, davantage d'octets sont utilisés dans les générations ultérieures), dont la plupart sont cryptés et font l'objet d'une somme de contrôle. De plus, les emplacements réels des blocs dans la mémoire flash de la cartouche varient et tout le contenu de la mémoire flash est soumis à une somme de contrôle, ce qui empêche toute modification d'être effectuée sans modifier également la valeur de la somme de contrôle. Les cryptages et les sommes de contrôle ne sont pas si compliqués et sont en fait assez bien documentés et faciles à falsifier pour les développeurs et les personnes disposant d'un matériel spécial ou d'émulateurs, mais le faire à partir d'un dispositif de triche qui doit s'appuyer sur des crochets et un accès limité à la RAM est sacrément sacré difficile .