Pour ce tuto je vais utiliser le petit jeu en ligne :
Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
Pour les outils j'utilise Cheat engine , la calculatrice et autoit
(le choix d Autoit c'est pour la rapidité de création de script mais n'importe quel langage est bon)
Adresses utiles :
Le jeux !! Romustrike : Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
Un editeur de memoire , Cheat Engine : Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
De quoi programmer rapidement ,Autoit : Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
Je passe sur l instalation de CE et Autoit
Certaines connaissances en informatique sont obligatoire !! ( go go section tutoriel )
On commence par aller s'inscrire sur le site Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris! et telecharger le jeu
Une fois inscrit et jeu installé au premier lancement choisissez "Internet" et puis "Creer"
En map prenez tunisia (il n y en a pas beaucoup de dispo)
Collez un MDP a votre partie pour eviter les visites pour l'instant
Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
Jouez un peu si vous voulez , pour récupéré la souris tapez sur Escape
Pour infos si vous lancez directement cheat engine vous risquez un message d erreur du jeu et plantage
Perso j ai renommer mon CE avec un nom a la con genre i386.exe et ca passe
Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
Bon on lance CE et sélection du processus du jeux "Romutstrike.exe"
On vas se faire les dents sur les balles
Dans CE a l emplacement value mettez le nombre de balles que vous avez
Pour moi c'est 10 (10 balles sur un chargeur de 17)
(on cherche une infos en decimal et codée en 32 bits (sur 4 bytes (octets)) donc on ne touche pas au reglages)
Appuyez sur First scan
Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
la on trouve enormement d'adresses !! (chez moi 5503 ;) )
on retourne dans le jeu et on tire quelques munitions
il m en reste 8, je met cette valeur dans "value" de CE et Nexte Scan
encore 33 adresses .... meme manip que precedement
Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
il m en reste 4, je met cette valeur dans "value" de CE et Nexte Scan
la c bon il ne me reste qu une adresse !!!
je verifi en directe et oui , quand je tire ca correspond bien a mon compteur
Si vous changez d arme vous verez que ca correspond au compteur de balle de l'arme active !!
Cette adresse est en noir dans le tableau de recherche
C est a dire que ce n est pas une info issus directement du programme mais de la memoire qu il utilise
Donc prochain demarage l'adresse ne seras pas la meme et adieu nos munition infinie !!!
Dans CE Double clic sur l adresse pour la copier dans la liste du bas , double clic sur la description pour la renommer en "Munition"
Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
Changez cette valeur et retournez dans le jeu vous verrez les munition prendre la valeur que vous avez donner
Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
Dans CE clic droit sur l'adresse munition et clic sur "Find out what accesses this adresse"
(trouver ce qui a acces a cette adresse) (en lecture et ecriture)
Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
Clic sur yes a la demande e confirmation
Allez dans le jeu et tirez une ou deux fois
De retour dans CE quelques lignes sont apparues
Count (nombre de fois ou l instruction a ete executée)
Instruction (Mnemonique assembleur executé)
Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
il y a une ligne qui correspond au nombre de cartouches tiré
pour moi c est 3 :
ce qui correspond a décrémente la valeur contenue a l adresse ebx+0x26990 de 1
donc notre compteur a munition -1
Si cette opération n est pas exécutée mes balles ne sont pas decrementée ! bingo les balles infinies !!
En assembleur le mnémonique qui correspond a "fait rien" c est "nop" opcode 0x90
donc a l'adresse 0x2ea03f si je modifie les 6 octets FF:8B:90:69:02:00 par 90:90:90:90:90:90 je ne dépense plus de munition !!
cette adresse n'est pas directe
si on fait un clic droit sur la ligne 002EA03F - FF 8B 90690200 - dec [ebx+00026990] et "Show this adress in the disassembler"
une fenêtre s ouvre a la ligne dec [ebx+00026990]
mais l adresse c est romustrike.exe+4a03f
Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
romustrike.exe correspond a la BASE du module romustrike.exe , ici D8A000 (j ai relancer le jeu depuis le debut du tuto donc ca a changer)
cette partie de l adresse est variable donc c est base + 0x4A03F
Bon on as les infos pour creer le cheat !!!
dans mon repertoir de travail je fait clic droit > nouveau script autoit que j'appel Balles.au3
j ouvre ce script
a la premiere ligne je colle :
directive pour que le programme se lance avec les droit admin
condition obligatoire pour avoir le mode "debug" qui permet la lecture memoire un processus tierce
la lib nomadmemory.au3 contient les fonction d'edition de memoire
les variables utilisées
On vas fair simple avec juste deux touches ,
les fonctions seront MunitionInf et _exit donc les declaractions seront
et la boucle infini pour garder le programme en marche
la fonction _exit :
une fonction pour récupéré l'adresse du module (truc recup des cheat de wow)
s'appel avec le pid et le nom du processus cible , retour adresse du module demander
Ouverture du processus cible et recuperation de l'adresse du module
et la fonction qui fait le miracle
Et voila !!!!!
Pendant le jeu une pression sur le 1 active / désactive le cheat et une pression sur le 9 arrête le cheat
Ce tuto marche aussi avec la vie ;)
En continuant mes recherches j'ai aussi fait un TP hack
Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
Pour les outils j'utilise Cheat engine , la calculatrice et autoit
(le choix d Autoit c'est pour la rapidité de création de script mais n'importe quel langage est bon)
Adresses utiles :
Le jeux !! Romustrike : Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
Un editeur de memoire , Cheat Engine : Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
De quoi programmer rapidement ,Autoit : Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
Je passe sur l instalation de CE et Autoit
Certaines connaissances en informatique sont obligatoire !! ( go go section tutoriel )
On commence par aller s'inscrire sur le site Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris! et telecharger le jeu
Une fois inscrit et jeu installé au premier lancement choisissez "Internet" et puis "Creer"
En map prenez tunisia (il n y en a pas beaucoup de dispo)
Collez un MDP a votre partie pour eviter les visites pour l'instant
Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
Jouez un peu si vous voulez , pour récupéré la souris tapez sur Escape
Pour infos si vous lancez directement cheat engine vous risquez un message d erreur du jeu et plantage
Perso j ai renommer mon CE avec un nom a la con genre i386.exe et ca passe
Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
Bon on lance CE et sélection du processus du jeux "Romutstrike.exe"
On vas se faire les dents sur les balles
Dans CE a l emplacement value mettez le nombre de balles que vous avez
Pour moi c'est 10 (10 balles sur un chargeur de 17)
(on cherche une infos en decimal et codée en 32 bits (sur 4 bytes (octets)) donc on ne touche pas au reglages)
Appuyez sur First scan
Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
la on trouve enormement d'adresses !! (chez moi 5503 ;) )
on retourne dans le jeu et on tire quelques munitions
il m en reste 8, je met cette valeur dans "value" de CE et Nexte Scan
encore 33 adresses .... meme manip que precedement
Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
il m en reste 4, je met cette valeur dans "value" de CE et Nexte Scan
la c bon il ne me reste qu une adresse !!!
je verifi en directe et oui , quand je tire ca correspond bien a mon compteur
Si vous changez d arme vous verez que ca correspond au compteur de balle de l'arme active !!
Cette adresse est en noir dans le tableau de recherche
C est a dire que ce n est pas une info issus directement du programme mais de la memoire qu il utilise
Donc prochain demarage l'adresse ne seras pas la meme et adieu nos munition infinie !!!
Dans CE Double clic sur l adresse pour la copier dans la liste du bas , double clic sur la description pour la renommer en "Munition"
Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
Changez cette valeur et retournez dans le jeu vous verrez les munition prendre la valeur que vous avez donner
Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
Dans CE clic droit sur l'adresse munition et clic sur "Find out what accesses this adresse"
(trouver ce qui a acces a cette adresse) (en lecture et ecriture)
Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
Clic sur yes a la demande e confirmation
Allez dans le jeu et tirez une ou deux fois
De retour dans CE quelques lignes sont apparues
Count (nombre de fois ou l instruction a ete executée)
Instruction (Mnemonique assembleur executé)
Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
il y a une ligne qui correspond au nombre de cartouches tiré
pour moi c est 3 :
Code:
002EA03F - FF 8B 90690200 - dec [ebx+00026990]
ce qui correspond a décrémente la valeur contenue a l adresse ebx+0x26990 de 1
donc notre compteur a munition -1
Si cette opération n est pas exécutée mes balles ne sont pas decrementée ! bingo les balles infinies !!
En assembleur le mnémonique qui correspond a "fait rien" c est "nop" opcode 0x90
donc a l'adresse 0x2ea03f si je modifie les 6 octets FF:8B:90:69:02:00 par 90:90:90:90:90:90 je ne dépense plus de munition !!
cette adresse n'est pas directe
si on fait un clic droit sur la ligne 002EA03F - FF 8B 90690200 - dec [ebx+00026990] et "Show this adress in the disassembler"
une fenêtre s ouvre a la ligne dec [ebx+00026990]
mais l adresse c est romustrike.exe+4a03f
Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
romustrike.exe correspond a la BASE du module romustrike.exe , ici D8A000 (j ai relancer le jeu depuis le debut du tuto donc ca a changer)
cette partie de l adresse est variable donc c est base + 0x4A03F
Bon on as les infos pour creer le cheat !!!
dans mon repertoir de travail je fait clic droit > nouveau script autoit que j'appel Balles.au3
j ouvre ce script
a la premiere ligne je colle :
Code:
#RequireAdmin
#Include <NomadMemory.au3>
SetPrivilege("SeDebugPrivilege", 1)
condition obligatoire pour avoir le mode "debug" qui permet la lecture memoire un processus tierce
la lib nomadmemory.au3 contient les fonction d'edition de memoire
les variables utilisées
Code:
Global $Offset_munition = 0x4A03F ; adresse a modifier
Global $Bool_munition = false ; temoin de marche arret
Global $MunitDec[6]=[0xFF,0x8B,0x90,0x69,0x02,0x00] ; octets d'origine pour restituer la decrementation des balles
Global $Modul,$Pid,$Open; variables diverses
Code:
une hotkey du pave numerique , le 1 , pour le marche arret des munition infini
une hotkey du pave numerique , le 9 , pour sortire du programme
Code:
HotKeySet("{NUMPAD1}","MunitionInf")
HotKeySet("{NUMPAD9}","_exit")
et la boucle infini pour garder le programme en marche
Code:
While 1
Sleep(500)
WEnd
la fonction _exit :
Code:
Func _exit()
If $Bool_munition Then MunitionInf() ; si cheat actif on le desactive
Exit
EndFunc
s'appel avec le pid et le nom du processus cible , retour adresse du module demander
Code:
Func _Get_BaseA($Arg00,$Name)
If $Arg00 = 0 Then
MsgBox(0, "Erreur", "Erreur Numero de process invalide")
Exit
EndIf
$Var04F5 = DllCall("Kernel32.dll", "HANDLE", "CreateToolhelp32Snapshot", "DWORD", 8, "DWORD", $Arg00)
$Var04F6 = DllStructCreate("DWORD dwSize;DWORD th32ModuleID;DWORD th32ProcessID;" & "DWORD GlblcntUsage;DWORD ProccntUsage;ptr modBaseAddr;" & "DWORD modBaseSize;HANDLE hModule;WCHAR szModule[256];" & "WCHAR szExePath[260]")
DllStructSetData($Var04F6, "dwSize", DllStructGetSize($Var04F6))
$Var003F = DllCall("Kernel32.dll", "BOOLEAN", "Module32FirstW", "HANDLE", $Var04F5[0], "ptr", DllStructGetPtr($Var04F6))
If ($Var003F[0] = False) Then
DllCall("Kernel32.dll", "BOOLEAN", "CloseHandle", "HANDLE", $Var04F5[0])
Return 0
Else
$Var003F[0] = True
Do
If DllStructGetData($Var04F6, "szModule") = $Name Then
DllCall("Kernel32.dll", "BOOLEAN", "CloseHandle", "HANDLE", $Var04F5[0])
Return DllStructGetData($Var04F6, "modBaseAddr")
EndIf
$Var003F = DllCall("Kernel32.dll", "BOOLEAN", "Module32NextW", "HANDLE", $Var04F5[0], "ptr", DllStructGetPtr($Var04F6))
Until $Var003F[0] = False
EndIf
EndFunc
Ouverture du processus cible et recuperation de l'adresse du module
Code:
$Pid=ProcessExists("romustrike.exe")
If $Pid=0 Then
MsgBox(0,"","Pas de pid , lancez le jeu en premier")
Exit
EndIf
$Open=_MemoryOpen($Pid)
If $Open=0 Then
MsgBox(0,"","Pas de de handle d'acces")
Exit
EndIf
$Modul=_Get_BaseA($pid,"romustrike.exe")
et la fonction qui fait le miracle
Code:
Func MunitionInf()
If $Bool_munition Then ; $Bool_munition est a true(vrai) si le cheat est actif donc on remet les octets d origine
For $x=0 to 5
_MEMORYwrite($Modul+$Offset_munition+$x,$Open,$MunitDec[$x],"byte") ; j ecris les octet du tableau a l adresse Offset_munition
Next
$Bool_munition = False ; on inverse pour le prochain appel
Else ;$Bool_munition est a false(faux) si le cheat n'est pas actif on remet les octets a 0x90 (NOP)
For $x=0 to 5
_MEMORYwrite($Modul+$Offset_munition+$x,$Open,0x90,"byte")
Next
$Bool_munition = True ; on inverse pour le prochain appel
EndIf
EndFunc
Et voila !!!!!
Pendant le jeu une pression sur le 1 active / désactive le cheat et une pression sur le 9 arrête le cheat
Ce tuto marche aussi avec la vie ;)
En continuant mes recherches j'ai aussi fait un TP hack
Last edited: