Retour


invoke WriteProcessMemory, 		   
	 DBEvent.u.CreateProcessInfo.hProcess, \ process dans lequel on écrit en mémoire
	 offset1, \	  addr où on commence à écrire
	 addr patch1 \,   adresse du buffer où on a placé nos données
	 2\, 	 	  nombre d'octets à écrire
	 NULL		  nombre d'octets réellement écrits.(ici on s'en fout)

	 
Donc ici pour écrire dans le programme cible il faut d'abord donner le handle de son process, 
et c'est DBEvent.u.CreateProcessInfo.hProcess car son handle à été recipéré dens notre 
structure DEBUG_EVENT qu'on avait nommé DBEvent, mais il ne se trouve pas n'importe où 
dans cette structure, il se trouve dans son paramètre CreateProcessInfo. OK?

Ensuite il faut savoir à quel endroit dans le programme cible on doit écrire. J'ai vu avec 
W32Dasm que le problème de la cible était un 'Jmp' qui se trouvait à l'offset 004010D8, donc 
j'ai déclaré cette valeur dans les '.data' et je l'ai appelé Offset1, j'y fais donc 
maintenant référence.

Reste à savoir quoi écrire à cet enplacement. C'est ce que j'ai placé dans Patch1.

2 c'est la longueur en octet de ce qui doit être écrit. Puisque ce que j'écris c'est 9090h 
ou 2 fois 90h ça me donne bien 2 octets.

Le NULL c'est parce qu'on s'en fout de saboit combient d'octets ont bien étés écrits.


Retour