PIZZALAND TRAINER VICE CITY

hepho Messages postés 12 Date d'inscription samedi 15 juin 2002 Statut Membre Dernière intervention 30 août 2007 - 25 août 2003 à 17:55
MrClock Messages postés 15 Date d'inscription samedi 30 janvier 2010 Statut Membre Dernière intervention 8 octobre 2011 - 17 févr. 2010 à 20:13
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/12724-pizzaland-trainer-vice-city

MrClock Messages postés 15 Date d'inscription samedi 30 janvier 2010 Statut Membre Dernière intervention 8 octobre 2011
17 févr. 2010 à 20:13
Petit problème à la ligne 39 ( if (GetAsyncKeyState(VK_F1) <> 0) and (GetAsyncKeyState(VK_CONTROL) <> 0) then )

[Erreur] Unit1.pas(39): Caractère incorrect dans le fichier d'entrée : '&' ($26)
[Erreur] Unit1.pas(39): Caractère incorrect dans le fichier d'entrée : '&' ($26)
[Erreur] Unit1.pas(54): ';' attendu(e) mais '.' trouvé(e)
[Erreur] Unit1.pas(56): Déclaration attendu(e) mais fin de fichier trouvé(e)
[Erreur fatale] Project1.dpr(5): Impossible de compiler l'unité utilisée 'Unit1.pas'

if (GetAsyncKeyState(VK_F1) <> 0) and (GetAsyncKeyState(VK_CONTROL) <> 0) then
begin
PokeAddress := $0100579C; // Adresse
PokeValue := 00; // Valeur à 'injecter'
NumberOfBytes := 1; // Nombre de byte à écrire
Fentr := FindWindow(nil,'Démineur'); // 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;
MrClock Messages postés 15 Date d'inscription samedi 30 janvier 2010 Statut Membre Dernière intervention 8 octobre 2011
17 févr. 2010 à 20:01
Tu peut m'envoyer un tuto ou m'expliquer via mon adresse, jais fait des trainers pour ether vapor, mais avec un logiciel ( Trainer maker kit ) voila, je veut le programmer car sinon mon antivirus detecte mes trainers comme des " hack tool "
benimabe38 Messages postés 1 Date d'inscription mardi 21 août 2007 Statut Membre Dernière intervention 6 octobre 2008
2 sept. 2007 à 19:28
merci mon ami c'est trops cool ce tut il m'a bcp aidé
à la prochaine et merci encore.
cs_devoluti0n Messages postés 22 Date d'inscription lundi 14 mars 2005 Statut Membre Dernière intervention 14 juin 2008
17 juil. 2007 à 20:19
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.
guillnoel Messages postés 1 Date d'inscription lundi 13 novembre 2000 Statut Membre Dernière intervention 11 avril 2005
11 avril 2005 à 09:43
J'ai rien compris, mais c'est pas grave, je débute la programmation !!!
DeZNiUS Messages postés 82 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 24 octobre 2003
1 sept. 2003 à 22:19
OOPS! desolé pr le double post..
DeZNiUS Messages postés 82 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 24 octobre 2003
1 sept. 2003 à 22:18
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 :)
DeZNiUS Messages postés 82 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 24 octobre 2003
1 sept. 2003 à 22:18
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 :)
hepho Messages postés 12 Date d'inscription samedi 15 juin 2002 Statut Membre Dernière intervention 30 août 2007
25 août 2003 à 23:17
c est sur que quand on le comprend c est pas difficile :)
cs_AMokers Messages postés 83 Date d'inscription jeudi 18 juillet 2002 Statut Membre Dernière intervention 8 octobre 2008
25 août 2003 à 18:46
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;

interface

uses
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;

// Variables

var
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 ?
hepho Messages postés 12 Date d'inscription samedi 15 juin 2002 Statut Membre Dernière intervention 30 août 2007
25 août 2003 à 17:55
Source tres tres instructif, tas un site qui explique tous ajouter en memoire comme tu fais stp ?