Infos :
Il faut avoir suivi le premier tuto pour attaquer celui ci
http://www.cheat-gam3.com/7-cours-pour-debutant/creation-dune-dll-proxy-pour-cheat-hack-163774/
Rappel
Ceci est l'adaptation en partie du tuto de Thiesius de Elitepvp
Sur la creation d'un cheat sous forme de dll
Pour ce Tuto je continue d'utiliser Rumerstrike
(déjà utiliser pour la partie 1 et la recherche des offsets)
GO GO !!
Ce coup ci ,contrairement au cheat externe au jeux , on est déjà dans le processus
Donc pas besoin du mode debug , de l ouverture du PID ect....
En revanche nous sommes (au niveau de l adresse memoire ) dans la dll pas dans le module Romustrike.exe
Donc pour commencer il nous faut l adresse du module pour pouvoir calculer nos adresse .
Pas besoin de se prendre la tete ;)
cette commande suffit si on le "cast" en DWORD
(j’espère que je ne me trompe pas d'expression , j’apprends en meme temps lol )
ce qui donne dans le code :
pour continuer il me faut les offset qui m intéresse , a savoir , la vie et les balles de mon perso
pour trouver ces offset vous avez ce tuto http://www.cheat-gam3.com/tutoriel/tuto-creer-un-cheat-de-z-163096/
baser sur romustrike ;)
pour mon cheat j ai trouver ceux ci :
les OffstePb01 et 02 c est pour trouver l’adresse base du joueur
vie et balles sont en fonction de l'adresse de base
Le gros du bordel !!!
J'ai créer deux commande ".Vie" et ".Setvie"
.Vie affiche les pv et les balles du perso
.Setvie modifie les pv avec la valeur choisi
LECTURE !!
.Vie
Variables
dans le principe habituel on ferait
memoryread(module+OffstePb01,proc,dword)
ici ca donneras :
Voila a ce moment la le dwBuffer contient le resultat de la lecture
vous voyez un coup "pointeur = valeur"
et apres "dwbuffer =(dword)*pointeur"
quand vous avez l asterix devant c est pour dire
"lire la valeur qui se situe a l'adresse du pointeur "
sans l'asterix c est juste l'adresse qui est retourner
et donc la suite :
pour ce code je me suis écrit les commentaires au fur et a mesure sinon je ne comprenais plus
on pourrais faire une fonction pour éviter la lecture mémoire a répétition
Apres tout ceci mes variables Vie et Balles contiennent les bonnes valeurs !!
plus qu'a afficher avec le formatage
le %d sa stipule un format decimale de la variable
ECRITURE !!
Tous les calcules d adresses sont identique
juste on vas inverser la manipulation du pointeur
Pour les points de vie a changer je defini une variables
une demande a l'utilisateur pour connaitre le nombre de pv
et maintenant je doit coller cette valeur a l'adresse de la Vie
pour lire la vie on a fait
(ce qui se trouve a l'adresse du pointeur vas dans la variable vie)
la on inverse !
(la valeur de "Setvie" est coller a l'adresse du pointeur )
!!
Par contre je ne sais pas encore sortir du jeux correctement
Quand je l arrête la console est figée....
Voila ;)
si joint le projet VS C++
Il faut avoir suivi le premier tuto pour attaquer celui ci
http://www.cheat-gam3.com/7-cours-pour-debutant/creation-dune-dll-proxy-pour-cheat-hack-163774/
Rappel
Ceci est l'adaptation en partie du tuto de Thiesius de Elitepvp
Sur la creation d'un cheat sous forme de dll
Pour ce Tuto je continue d'utiliser Rumerstrike
(déjà utiliser pour la partie 1 et la recherche des offsets)
GO GO !!
Ce coup ci ,contrairement au cheat externe au jeux , on est déjà dans le processus
Donc pas besoin du mode debug , de l ouverture du PID ect....
En revanche nous sommes (au niveau de l adresse memoire ) dans la dll pas dans le module Romustrike.exe
Donc pour commencer il nous faut l adresse du module pour pouvoir calculer nos adresse .
Pas besoin de se prendre la tete ;)
Code:
GetModuleHandle("romustrike.exe")
cette commande suffit si on le "cast" en DWORD
(j’espère que je ne me trompe pas d'expression , j’apprends en meme temps lol )
ce qui donne dans le code :
Code:
Romustrike = (DWORD)GetModuleHandle("romustrike.exe"); // adresse du module romustrike.exe
pour continuer il me faut les offset qui m intéresse , a savoir , la vie et les balles de mon perso
pour trouver ces offset vous avez ce tuto http://www.cheat-gam3.com/tutoriel/tuto-creer-un-cheat-de-z-163096/
baser sur romustrike ;)
pour mon cheat j ai trouver ceux ci :
Code:
DWORD OffstePb01 = 0x18B9C4 ;
DWORD OffstePb02 = 0x743298 ;
DWORD OffsetVie = 0x3b480 ;
DWORD OffsetBalles = 0x26990 ;
les OffstePb01 et 02 c est pour trouver l’adresse base du joueur
vie et balles sont en fonction de l'adresse de base
Le gros du bordel !!!
J'ai créer deux commande ".Vie" et ".Setvie"
.Vie affiche les pv et les balles du perso
.Setvie modifie les pv avec la valeur choisi
LECTURE !!
.Vie
Variables
Code:
DWORD Romustrike = 0 ; // Pour l adresse du module
DWORD dwBuffer = 0 ; // Un tampon pour les transfère de memoire
DWORD* pointeur = 0 ; // Un pointeur ;)
DWORD playerBase = 0; // Mon adresse de base du joueur
DWORD vie = 0 , balles =0; // La vie et les balles
dans le principe habituel on ferait
memoryread(module+OffstePb01,proc,dword)
ici ca donneras :
Code:
Romustrike = (DWORD)GetModuleHandle("romustrike.exe"); // adresse du module romustrike.exe
dwBuffer = Romustrike + OffstePb01 ; // calcule de la nouvelle adresse module+offset 1 romustrike.exe + 18B9C4
pointeur = (DWORD*)dwBuffer ; // passe l adresse en pointeur
dwBuffer = (DWORD)*pointeur ; // transfere ce qui est pointé dans le buffer = ptr1=memoryread(Romustrike + OffstePb01,dll,dword) 3330020
Voila a ce moment la le dwBuffer contient le resultat de la lecture
vous voyez un coup "pointeur = valeur"
et apres "dwbuffer =(dword)*pointeur"
quand vous avez l asterix devant c est pour dire
"lire la valeur qui se situe a l'adresse du pointeur "
sans l'asterix c est juste l'adresse qui est retourner
et donc la suite :
Code:
dwBuffer = dwBuffer + OffstePb02 ; // calcule de la nouvelle adresse ptr1+offset 2 3330020 + 0x743298
pointeur = (DWORD*)dwBuffer ; // passe l adresse en pointeur
dwBuffer = (DWORD)*pointeur ;// transfere ce qui est pointé dans le buffer = ptr2=memoryread(ptr1+ OffstePb02,dll,dword) 9ef3df8
// pas de calcule de la nouvelle adresse ptr2+0
pointeur = (DWORD*)dwBuffer ; // passe l adresse en pointeur
dwBuffer = (DWORD)*pointeur ;// transfere ce qui est pointé dans le buffer = memoryread(ptr2,dll,dword) player base;
playerBase = dwBuffer ;
// lecture vie
dwBuffer = playerBase + OffsetVie ; // calcule de l adresse
pointeur = (DWORD*)dwBuffer ; // passe l adresse en pointeur
vie = (DWORD)*pointeur ; // dwbuff = point de vie
dwBuffer = playerBase + OffsetBalles ; // calcule de l adresse
pointeur = (DWORD*)dwBuffer ; // passe l adresse en pointeur
balles = (DWORD)*pointeur ; // dwbuff = Balles dans le chargeur
pour ce code je me suis écrit les commentaires au fur et a mesure sinon je ne comprenais plus
on pourrais faire une fonction pour éviter la lecture mémoire a répétition
Apres tout ceci mes variables Vie et Balles contiennent les bonnes valeurs !!
plus qu'a afficher avec le formatage
Code:
printf_s("\nPoints de vie : %d \nBalles dans le chargeur %d ",vie,balles);
le %d sa stipule un format decimale de la variable
ECRITURE !!
Tous les calcules d adresses sont identique
juste on vas inverser la manipulation du pointeur
Pour les points de vie a changer je defini une variables
Code:
DWORD Setvie ;
une demande a l'utilisateur pour connaitre le nombre de pv
Code:
printf_s("\nNombre de Pts de vie : ");
scanf("%d", &Setvie);
et maintenant je doit coller cette valeur a l'adresse de la Vie
pour lire la vie on a fait
Code:
vie = (DWORD)*pointeur ; // dwbuff = point de vie
la on inverse !
Code:
*pointeur = Setvie ;
(la valeur de "Setvie" est coller a l'adresse du pointeur )
!!
Par contre je ne sais pas encore sortir du jeux correctement
Quand je l arrête la console est figée....
Voila ;)
si joint le projet VS C++