[C ou C++]écriture direct dans la mémoire d'un processus
supers03
Messages postés106Date d'inscriptionmardi 6 janvier 2004StatutMembreDernière intervention 1 décembre 2008
-
5 janv. 2005 à 12:45
meech
Messages postés209Date d'inscriptionvendredi 11 avril 2003StatutMembreDernière intervention14 août 2007
-
6 janv. 2005 à 22:59
Salut à tous
Suite à la lecture des deux articles de Krust sur "comment créer des cheats" (http://www.cppfrance.com/gma/tout/cheat) , j'ai eu envi d'approfondir sur le sujet.
J'ai bien compris comment modifier le code d'un processus lancé en mémoire, mais j'aimerai savoir si à partir d'un programme C on peu directement changer la valeur de certaine variables...
Je m'explique avec un exemple: le nombre de points que l'on possède dans un jeu est pointé par "eax" ... peu ont modifier directement la valeur de "eax" ???
Etant novice en asm, j'ai compris que les instructions sont enregstré dans certaines adresse:
00445987 mov eax, esi
mais est-ce la même chose pour les variable:
par exemple :
00445990 eax
ou
00445990 eax; 1000
??????
meech
Messages postés209Date d'inscriptionvendredi 11 avril 2003StatutMembreDernière intervention14 août 2007 6 janv. 2005 à 22:59
Salut,
Je en me suis pas réellement penché sur le problème, mais si tu cherches à effectuer ce genre d'action sous Win32, intéresse-toi aux fonctions suivantes :
- ReadProcessMemory
- WriteProcessMemory
Après avoir initialisé un handle pointant sur un processus donné (créé par tes soins - fonction CreateProcess - ou ouvert - fonction OpenProcess), tu peux effectuer différentes opérations de lecture/écriture dans la mémoire.
Plus simplement, s'il s'agit de changer le titre d'une fenêtre Windows, d'écrire dans un champ de type Edit , de fermer une fenêtre ou tout autre chose de ce genre, les API WIN32 fournissent un certain nombre de fonctions permettant d'effectuer ces manipulations (comme SendMessage & PostMessage, je crois). Des codes de ce type sont disponibles un peu partout.