Problème d'écriture en mémoire

  • Partenaires

Utilisateurs qui regardent le poste (Total: 0, Members: 0, Invité: 0)

Statut
La discussion n'est pas ouverte à d'autres réponses
Babart

Babart

Level 5
Level 4
Level 3
Level 2
Level 1
24 Sept. 2011
522
0
321
32
Bonjour,

Etant en train d'essayer (encore) de faire mon premier trainer pour BO2 SP, je suis partit dans l'écriture de mémoire.
Seulement, je n'arrive pas à écrire correctement dans la mémoire.

j'ai relevé les adresses mémoires avec cheat-engine, et je suppose que ce sont les bonnes puisque en les modifiant avec CE, elles changent IG.
Mais avec mon code, rien ne change.
Si quelqu'un pourrait m'aider, je lui en serez reconnaissant.

Code:
int ammoAdress = 0x1BAB3DC; // adress munition
int wantedValue = 40;
writeIntoMemory(ammoAdress, wantedValue);

private: void writeIntoMemory(int targetAdresse, int value)
{
	WriteProcessMemory (hProcess, (LPVOID)targetAdresse, (LPVOID) &value, sizeof(&value), NULL);
}
 
Nayres

Nayres

Membre Banni
15 Avr. 2012
3,429
0
341
Quelque part.
Bizarre, le code semble correct, c'est une dll ou une console, sinon as-tu bien définis ton hProcess ?
 
Babart

Babart

Level 5
Level 4
Level 3
Level 2
Level 1
24 Sept. 2011
522
0
321
32
En enlevant des bouts de code n'ayant rien à voir, ça donne ça.

Code:
T6SP = FindWindow(NULL, "Call of Duty®: Black Ops II");
if( T6SP == NULL )
{
}else
{
	GetWindowThreadProcessId(T6SP, &T6SP_ID);
	hProcess = OpenProcess(PROCESS_ALL_ACCESS, NULL, T6SP_ID);
	if( hProcess == NULL )
	{
		MessageBox::Show("Unable to open the procces.\nPlease, report this error.","Error");
		gameReady = false;
	}else
	{
		// game & process found
		timer_munition->Start(); // mon code d'écriture est dans ce timer
}
 
TheHardButcher

TheHardButcher

Programmeur C/C++
Level 5
Level 4
Level 3
Level 2
Level 1
14 Déc. 2009
1,460
58
964
France
Déjà, je te conseil de te rajouter des message de debug un peu partout, pour vérifier rien que si :
Code:
if( T6SP == NULL ){ }
Bah au moins t'es au courant !

Autre chose, envoie le code complet, parce que dans le morceau que t'a envoyer, il y a déjà des fautes de "}" qui manque et autre, envoie TOUT !
 
R

ragnarock

Level 4
Level 3
Level 2
Level 1
22 Mars 2010
193
0
917
Salut, tu peux mettre des GetLastError() pour voir ou ça foire.
 
Babart

Babart

Level 5
Level 4
Level 3
Level 2
Level 1
24 Sept. 2011
522
0
321
32
Désolé, j'ai fixé ça seul :p
Il me manquait l'ajout de l'adresse de base.

Et il fallait rajouter une librairie supplémentaire lors de la compilation (User32.lib).

@TheHardButcher
En fait, effectivement, j'avais raccourcis mon code.
j'ai enlevé toutes la gestion des erreurs, try{}catch et MessageBox dans le code afin de laisser essentiellement ce sur quoi je bloquais.
Encore merci à tous pour vos conseils :)
 
TheHardButcher

TheHardButcher

Programmeur C/C++
Level 5
Level 4
Level 3
Level 2
Level 1
14 Déc. 2009
1,460
58
964
France
Au pire, si tu galère pour ce genre de code, tu peux toujours regarder mon tuto sur l'écriture de mémoire ;)
 
7centdu75

7centdu75

Level 2
Level 1
24 Déc. 2012
49
0
211
33
utilise DWORD pour ton adresse en hex, pas int.
 
Statut
La discussion n'est pas ouverte à d'autres réponses