Lire est écrire dans la mémoire (attention programmeur vraiment expert)

    Publicités

Users Who Are Viewing This Thread (Total: 0, Members: 0, Guests: 0)

Dyazz

Haskell & a mp; amp; amp;
V
Dec 28, 2009
618
0
922
tout d'abord voilà un petit code que j'ai trouvé que je suis sur fait bien l'affaire
Code:
#include <windows.h>

int main()
{
	HWND hWnd = FindWindow(0, "Calculatrice");
  	if(hWnd == 0)
	{
    		MessageBox(0, "Error cannot find window.", "Error", MB_OK|MB_ICONERROR);
  	}
	else
	{
    		DWORD proccess_ID;
    		GetWindowThreadProcessId(hWnd, &proccess_ID);
    		HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, proccess_ID);
    		if(!hProcess)
		{
      			MessageBox(0, "Could not open the process!", "Error!", MB_OK|MB_ICONERROR);
    		}
		else
		{
      			int newdata = 500;
     		 	DWORD newdatasize = sizeof(newdata);
      			if(WriteProcessMemory(hProcess, (LPVOID)0x57C2A4, &newdata, newdatasize, NULL))
			{
        				MessageBox(NULL, "WriteProcessMemory worked.", "Success", MB_OK + MB_ICONINFORMATION);
      			}
			else
			{
        				MessageBox(NULL, "Error cannot WriteProcessMemory!", "Error", MB_OK + MB_ICONERROR);
      			}
      			CloseHandle(hProcess);
    		}
  	}
  	return 0;
}
ce code ne marche que sur windows n'éssayer jamais sur linux car la lib qui écris dans la mémoire ne marche pas comme sur windows si vous mettez ce code en remplacent windows.h déjà ça compilera pas et de deux si vous vous obstiner à vouloir le faire ça va foiré le noyeau (qui est pas destiner à lire et écrire dans la mémoire)

désolé pour ce petit paragraphe ^^
donc le code déjà l'include windows.h (vous pouvez rajouter winUser.h qui vous permettra d'interagir avec l'utilisateur)

ensuite il y a le main (perso mes mains je les fais avec int main (int argc, char **argv))

ensuite il y a le hwnd (handle) je vais pas m'éttendre dessus mais il fait office de pointeur (vers une fenêtre est non une variable)
ensuite il faut nous faut déclaré un double word (DWORD)
donc c'est la ligne DWORD processe_Id (je vous laisse comprendre les if else on est en expert là)

GetWindowThreadProcessId(hWnd, &proccess_ID); donc les deux réunnis nous donne la fenêtre et l'id du processus donc pratique (je vous rappel qu'on est dans le cheat)
WriteProcessMemory(hProcess, (LPVOID)0x57C2A4, &newdata, newdatasize, NULL)
là l'adresse devient 0x57C2A4 donc j'aurai préféré un pointeur car c'est par la valeur de notre variable à cet adresse que va être remplacer l'adresse mémoire

donc à retenir de tout ça c'est que le memory éditing est en quelque sortent de l'écriture dans les variables du jeux (pas les variables elles mêmes car elle sont d'ordre privé donc non accessible de l'exterieur) voilà le petit cours est finis
merci de l'avoir suivit et bon cheat !
 

programme-

Nouveau membre
Jul 4, 2013
2
0
201
46
Excellent tuto pour crée des trainer sauf que cher moi les addresses des variables sont différente à chaque lancement