Peut-on lire ce qui est écrit dans la RAM ?
Fermé
Sam
-
20 avril 2012 à 11:00
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 19 oct. 2012 à 10:57
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 19 oct. 2012 à 10:57
A voir également:
- Peut-on lire ce qui est écrit dans la RAM ?
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Ordinateur qui rame - Guide
- Lire epub - Guide
- Lire fichier bin - Guide
- Clément a partagé le fichier mme bovary. il a écrit des commentaires dans le document. quel est le 2e commentaire ? - Guide
4 réponses
blux
Messages postés
26556
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
29 décembre 2024
3 319
20 avril 2012 à 11:23
20 avril 2012 à 11:23
Salut,
ce n'est pas toi qui doit s'occuper de ça, mais le processeur...
ce n'est pas toi qui doit s'occuper de ça, mais le processeur...
La question est justement : comment faire pour m'en occuper moi-même ?
Mon but est en fait de modifier les données de la RAM pour modifier le "déroulement" d'un jeu, et ce, pendant la partie. En fait, au cours de la partie, je récupère des objets, puis, à la fin, tous les objets que j'ai récupérés durant la partie sont ajoutés à mon inventaire.
Comment faire pour modifier la quantité et le type d'objets dans la RAM, afin que je "pilote" le bilan de la partie ?
Mon but est en fait de modifier les données de la RAM pour modifier le "déroulement" d'un jeu, et ce, pendant la partie. En fait, au cours de la partie, je récupère des objets, puis, à la fin, tous les objets que j'ai récupérés durant la partie sont ajoutés à mon inventaire.
Comment faire pour modifier la quantité et le type d'objets dans la RAM, afin que je "pilote" le bilan de la partie ?
blux
Messages postés
26556
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
29 décembre 2024
3 319
20 avril 2012 à 12:19
20 avril 2012 à 12:19
Je crains que tu ne te fourvoies...
Dans la RAM, on ne stocke pas des objets, mais des 0 et des 1.
Seul le programme qui lit/écrit dans la RAM sait à quoi correspondent ces donnés et où il les a stockées.
Ce que tu souhaites faire ne marcherait qu'à la condition de savoir comment les données sont codées et où elles sont enregistrées, condition limités par l'accès à la portion de RAM allouée par le système d'exploitation au jeu exécuté...
Dans la RAM, on ne stocke pas des objets, mais des 0 et des 1.
Seul le programme qui lit/écrit dans la RAM sait à quoi correspondent ces donnés et où il les a stockées.
Ce que tu souhaites faire ne marcherait qu'à la condition de savoir comment les données sont codées et où elles sont enregistrées, condition limités par l'accès à la portion de RAM allouée par le système d'exploitation au jeu exécuté...
Je me doute que les objets que je prends en jeu ne sont pas stockés tels quels dans la RAM, mais bien sous forme de données.
Ce que je suppose, c'est que ça se passe comme ça :
- je prends un objet en jeu
- dans la RAM, à l'endroit où le processeur stocke les données du jeu en question, il y a un endroit où sont "enregistrés" les objets que je prends (admettons sous la forme "itemX=1 ; item Y=9, ..." ou alors il y a la liste complète des items que je peux trouver, et seule la quantité change). Le processeur y ajoute une ligne pour l'item que je viens de prendre, ou augmente de 1 la quantité de l'objet en question
- à la fin de la partie, le processeur récupère les quantités de ce "listing" et ajoute la quantité d'items correspondants à mon inventaire.
Est-ce que ça peut se passer comme ça ?
Où sont stockées ces données ?
Comment accéder au contenu de la RAM ?
Est-il possible de lire, en clair (je demande pas en langue française, mais en "lisible", pas uniquement des 0 et des 1 ou des trucs du genre "Xø7þ¾¹»n3Ïþ(}1Éé(TM)Á-dòÂB3×pÜc",þ¤àô' ÷TzE³ù>€8'oeðé") ces données ?
Est-il possible de les modifier ?
Et si oui, comment ?
Merci d'avance.
Sam
Ce que je suppose, c'est que ça se passe comme ça :
- je prends un objet en jeu
- dans la RAM, à l'endroit où le processeur stocke les données du jeu en question, il y a un endroit où sont "enregistrés" les objets que je prends (admettons sous la forme "itemX=1 ; item Y=9, ..." ou alors il y a la liste complète des items que je peux trouver, et seule la quantité change). Le processeur y ajoute une ligne pour l'item que je viens de prendre, ou augmente de 1 la quantité de l'objet en question
- à la fin de la partie, le processeur récupère les quantités de ce "listing" et ajoute la quantité d'items correspondants à mon inventaire.
Est-ce que ça peut se passer comme ça ?
Où sont stockées ces données ?
Comment accéder au contenu de la RAM ?
Est-il possible de lire, en clair (je demande pas en langue française, mais en "lisible", pas uniquement des 0 et des 1 ou des trucs du genre "Xø7þ¾¹»n3Ïþ(}1Éé(TM)Á-dòÂB3×pÜc",þ¤àô' ÷TzE³ù>€8'oeðé") ces données ?
Est-il possible de les modifier ?
Et si oui, comment ?
Merci d'avance.
Sam
blux
Messages postés
26556
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
29 décembre 2024
3 319
20 avril 2012 à 13:41
20 avril 2012 à 13:41
dans la RAM, à l'endroit où le processeur stocke les données du jeu en question, il y a un endroit où sont "enregistrés" les objets que je prends (admettons sous la forme "itemX=1 ; item Y=9, ..." ou alors il y a la liste complète des items que je peux trouver, et seule la quantité change)
Seul l'examen préalable du programme permet de savoir comment sont rangées les données. Il faut donc le désassembler (s'il se laisse faire) et aller à la pêche, bon courage...
Où sont stockées ces données ?
En RAM
Comment accéder au contenu de la RAM ?
En C, en assembleur...
Est-il possible de lire, en clair (je demande pas en langue française, mais en "lisible", pas uniquement des 0 et des 1 ou des trucs du genre "Xø7þ¾¹»n3Ïþ(}1Éé(TM)Á-dòÂB3×pÜc",þ¤àô' ÷TzE³ù>€8'oeðé") ces données ?
Les symboles que tu donnes ne sont que la représentation des 0 et 1 en mémoire...
Est-il possible de les modifier ?
Et si oui, comment ?
Comme je l'ai dit précédemment : C, assembleur... avec la joie d'aller piétiner des espaces mémoires qui ne nous sont pas accessibles normalement ->BSOD garanti...
Seul l'examen préalable du programme permet de savoir comment sont rangées les données. Il faut donc le désassembler (s'il se laisse faire) et aller à la pêche, bon courage...
Où sont stockées ces données ?
En RAM
Comment accéder au contenu de la RAM ?
En C, en assembleur...
Est-il possible de lire, en clair (je demande pas en langue française, mais en "lisible", pas uniquement des 0 et des 1 ou des trucs du genre "Xø7þ¾¹»n3Ïþ(}1Éé(TM)Á-dòÂB3×pÜc",þ¤àô' ÷TzE³ù>€8'oeðé") ces données ?
Les symboles que tu donnes ne sont que la représentation des 0 et 1 en mémoire...
Est-il possible de les modifier ?
Et si oui, comment ?
Comme je l'ai dit précédemment : C, assembleur... avec la joie d'aller piétiner des espaces mémoires qui ne nous sont pas accessibles normalement ->BSOD garanti...
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
20 avril 2012 à 16:20
20 avril 2012 à 16:20
Je rejoins blux dans son analyse.
Pour être plus clair, dans un OS actuel (Linux ou Windows) tu ne peux pas accéder directement à la mémoire d'un autre processus, l'OS, gardien de la RAM t'en empêche. Tout demande devrais se solder par une erreur de segmentation.
à ça, tu peux ajouter la quasi impossibilité de t'y retrouver dans des données que tu n'as pas créer.
Ce qu'il faudrait faire : bidouiller ton OS (donc pas Windows) pour pouvoir faire une image de la RAM, et la comparer juste après obtention de ton item. Avec un bon diff et un peu de chance tu aura peut être quelque chose.
Au final, je ne suis pas sur que l'opération en vaille le coup.
Pour être plus clair, dans un OS actuel (Linux ou Windows) tu ne peux pas accéder directement à la mémoire d'un autre processus, l'OS, gardien de la RAM t'en empêche. Tout demande devrais se solder par une erreur de segmentation.
à ça, tu peux ajouter la quasi impossibilité de t'y retrouver dans des données que tu n'as pas créer.
Ce qu'il faudrait faire : bidouiller ton OS (donc pas Windows) pour pouvoir faire une image de la RAM, et la comparer juste après obtention de ton item. Avec un bon diff et un peu de chance tu aura peut être quelque chose.
Au final, je ne suis pas sur que l'opération en vaille le coup.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
19 oct. 2012 à 10:57
19 oct. 2012 à 10:57
Je reviens là dessus, pour corriger un peu ce que j'ai dit.
Il semblerai d'après le man de /proc que sous Linux il soit possible de lire la mémoire d'un processus grace à la commande open sur le fichier /proc/[PID]/mem. Il y a surement l'équivalent sous Windows, sous une autre forme.
De plus, gdb est capable de s'attacher un processus sans pour autant planter l'OS sous windows. Donc en fait ça doit être possible. Reste à s'y retrouver dans les données brutes.
Il semblerai d'après le man de /proc que sous Linux il soit possible de lire la mémoire d'un processus grace à la commande open sur le fichier /proc/[PID]/mem. Il y a surement l'équivalent sous Windows, sous une autre forme.
De plus, gdb est capable de s'attacher un processus sans pour autant planter l'OS sous windows. Donc en fait ça doit être possible. Reste à s'y retrouver dans les données brutes.