Sign in to follow this  
mdperdu

Tuto Creer un cheat de A a Z !!

4 posts in this topic

Pour ce tuto je vais utiliser le petit jeu en ligne :

 

Romustrike - Accueil

 

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 : Romustrike - Accueil

Un editeur de memoire , Cheat Engine : Cheat Engine

De quoi programmer rapidement ,Autoit : AutoIt Français • Afficher le sujet - Pack AutoIt-Fr - Installer AutoIt et ses outils en 1 clic.

 

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 Romustrike - Accueil 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

 

mini_356641CreationPartie.png

 

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

 

mini_410205renommer.png

 

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

 

mini_32717304Cherche01.png

 

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

 

47655204Cherche02.png

 

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"

 

83924704Cherche03.png

 

 

Changez cette valeur et retournez dans le jeu vous verrez les munition prendre la valeur que vous avez donner

 

32137904Cherche04.png

 

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)

 

20104105Pointeur01.png

 

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é)

 

mini_31804005Pointeur02.png

 

il y a une ligne qui correspond au nombre de cartouches tiré

pour moi c est 3 :

 

>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

 

459534MunitionINF.png

 

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 :

>
#RequireAdmin
#Include <NomadMemory.au3>
SetPrivilege("SeDebugPrivilege", 1)

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

>
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

On vas fair simple avec juste deux touches ,

>
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 

les fonctions seront MunitionInf et _exit donc les declaractions seront

>
HotKeySet("{NUMPAD1}","MunitionInf")
HotKeySet("{NUMPAD9}","_exit")

 

et la boucle infini pour garder le programme en marche

>
While 1

Sleep(500)
WEnd

 

la fonction _exit :

>
Func _exit()
If $Bool_munition Then MunitionInf() ; si cheat actif on le desactive
Exit
EndFunc

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

 

>
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

>
$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

 

>
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

Edited by mdperdu

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this