Télécharger le zip
Source tres tres instructif, tas un site qui explique tous ajouter en memoire comme tu fais stp ?
Je te remerci ;)Je te file une partie de tuto car comme je le disait le site existe plus :( Je vais vous faire un petit exemple (toujours avec GTA3) pour avoir les munitions illimitées lorsqu'on presse CRTL+F1 pendant une partie...Pour cela, nous allons utiliser Borland Delphi et les API (Application Programming Interface) suivantes :// Pour détecter les touches pressées :GetAsyncKeyState(virtual-key code);// Pour trouver la fenêtre du jeu :FindWindow(address of class name, address of window name);// Pour récupérer l'ID :GetWindowThreadProcessId(handle of window, address of variable for process identifier); // Pour ouvrir le processus :OpenProcess(access flag, handle inheritance flag, process identifier);// Pour écrire dans la mémoire :WriteProcessMemory(handle of process whose memory is written to, address to start writing to, address of buffer to write data to, number of bytes to write, actual number of bytes written);// Pour fermer l'handle :CloseHandle(handle of object to close);[ Delphi ] ------------------------------- Begin -------------------------------unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;type TForm1 = class(TForm) Timer1: TTimer; procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } end;// Variablesvar Form1 : TForm1; Fentr : integer; PrcID : integer; ProID : integer; Opnpr : integer; Wrtpr : cardinal; Buf : pchar; NumberOfBytes : byte; PokeValue : dword; PokeAddress : dword;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);begin Timer1.Interval := 1; // Défini l'intervalle du timer à 1 milliseconde Timer1.Enabled := True; // Lance le timer...end;procedure TForm1.Timer1Timer(Sender: TObject);begin// Si l'utilisateur presse CTRL+F1...if (GetAsyncKeyState(VK_F1) <> 0) and (GetAsyncKeyState(VK_CONTROL) <> 0) then begin PokeAddress := $55C7E9; // Adresse PokeValue := 99; // Valeur à 'injecter' NumberOfBytes := 1; // Nombre de byte à écrire Fentr := FindWindow(nil,'GTA3'); // On cherche la fenêtre du jeu... PrcID := GetWindowThreadProcessId(Fentr,@ProID); // On cherche l'ID une fois que la fenêtre a été trouvée Opnpr := OpenProcess(PROCESS_ALL_ACCESS,False,ProID); // On ouvre le processus GetMem(Buf,1); // Pointeur... Buf^ := Chr(PokeValue); // La valeur à écrire WriteProcessMemory(Opnpr, ptr(PokeAddress),Buf,NumberOfBytes,Wrtpr); // On écrit la valeur @PokeAddress FreeMem(Buf); // On libère les ressources closehandle(Opnpr); end;end.[ Delphi ] -------------------------------- End --------------------------------Et voilà, c'est tout pour le code ! Pas si difficile que ça finalement, non ?
c est sur que quand on le comprend c est pas difficile :)
Je me souvient d'avoir vu ca dans un magazine ou Majen avait expliqué ca sur PacMania3D. C'etait cool, j'avait fait un trainer pour NFS6 grace a lui :)
OOPS! desolé pr le double post..
J'ai rien compris, mais c'est pas grave, je débute la programmation !!!
J'adore cette source et je l'utilise trés souvent, cependant vous sauriez comment "injecter" une valeur à une adresse en read only ? (comment cheat engine pourait le faire) car je bloque la dessus.
merci mon ami c'est trops cool ce tut il m'a bcp aidéà la prochaine et merci encore.
Se souvenir du profil
Mot de passe oublié ? / Activation de compteCréer un compte