Je ne suis pas sûr à 100% du fonctionnement interne des différents assembleurs et processeurs, mais j'essaie d'expliquer du mieux que je peux ce que je comprends.
Disons que les instructions de la machine pour effectuer une transition de carte / warp est une certaine valeur, par exemple AC
.
Disons que cette instruction prend une valeur pour décider de l'endroit où le joueur doit se déplacer. Par exemple, la salle du boss final a une valeur C8
.
Donc si vous dites à votre jeu d'appeler la routine pour exécuter AC C8
il sait qu'il doit téléporter le joueur vers le boss final.
Maintenant, supposons que vous ayez un mécanisme d'inventaire qui enregistre les objets par leur id. Une bombe a pour id C8
et un bâton a id AC
.
Supposons que les données de l'inventaire soient disposées de manière séquentielle, de sorte que le fait d'avoir d'abord un bâton, puis une bombe, soit représenté comme suit AC C8
également.
Maintenant, "tout ce que vous avez à faire" est de tromper le programme en le faisant sauter à un mauvais endroit alors qu'il essaie d'exécuter une action quelconque. Ceci est généralement fait par le "compteur de programme" qui pointe vers l'adresse de l'instruction à exécuter.
Si vous parvenez à manipuler le compteur du programme pour qu'il pointe vers le début de votre inventaire au lieu de l'adresse à laquelle il se trouve normalement devrait le programme va maintenant lire les données de votre inventaire, mais le traite comme un code exécutable à la place . Donc, puisque votre inventaire contient "bâton, bombe", les données qui seront lues sont les suivantes AC C8
ce qui fait que le programme vous emmène dans la salle du patron.
Je pense que ce genre de chose est généralement obtenu en corrompant des parties de la mémoire ou quelque chose de similaire. La section de la mémoire qui est corrompue contient maintenant des données "absurdes", mais peut toujours être exécutée.
Je dirais qu'un bon exemple de la façon dont tout cela peut être exploité est montré ici : Comment battre Pokemon Jaune en 0:00
4 votes
Les commentaires ont été supprimés. Cette section n'est pas destinée à discuter de la validité des glitches dans les speedruns, ou de ce qui compte pour battre un jeu.