Tuto Creer un cheat de A a Z !!

    Publicités

Users Who Are Viewing This Thread (Total: 0, Members: 0, Guests: 0)

Mar 30, 2011
1,014
1
944
In Your Ass
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 :

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)
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
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
On vas fair simple avec juste deux touches ,
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
les fonctions seront MunitionInf et _exit donc les declaractions seront
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
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

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:

Evaelis

La Voix de la Sagesse
V
Ancien staff
Apr 28, 2010
22,949
468
1,699
Valhalla
Alors là, les débutants vont pas comprendre de quoi ça parle, mais c'est sympa d'avoir un tutoriel qui parle de ça au lieu du simple value hack.
 
Mar 30, 2011
1,014
1
944
In Your Ass
si vous avez un pote qui vous aide a chercher les offset dans le jeu il doit etre facile de faire un radar egalement

peut être un AIMBOT (demande initiale a la base) mais je ne connais pas la mécanique de ce genre de code
 

Evaelis

La Voix de la Sagesse
V
Ancien staff
Apr 28, 2010
22,949
468
1,699
Valhalla
Je doute que l'on puisse faire un aimbot ainsi.
Quoiqu'il suffit de faire les calculs dans l'espace en fonction des positions et d'ensuite appliquer la vue (Orientation de la caméra) désirée.
 
Mar 30, 2011
1,014
1
944
In Your Ass
Une projection 3D > 2D ... comme pour wow , assez casse bonbon a faire
Ou alors en se basant sur le code qui affiche le nom au dessus du joueur peut etre
 
Apr 26, 2011
1,315
2
944
26
In my home
Discord
brokeos
En effet c'est très compliqué, j'ai compris la moitié, mais une chose ma servie, pour connaitre l'adresse fixe ! :)
 

Evaelis

La Voix de la Sagesse
V
Ancien staff
Apr 28, 2010
22,949
468
1,699
Valhalla
Relis bien le code, renseigne toi un peu sur la mémoire et tu devrais comprendre :p
 

FurYCraZ

Membre actif
Feb 4, 2014
130
0
136
Los Angeles
Merci d'avoir rédiger un tel tutoriel bien détaillé et bien expliqué étape par étape. Tu vas en aider plus d'un à mous avis.
 

Sharkou_

Membre
May 6, 2012
9
0
566
Merci beaucoup j'ai beaucoup appris :)
Une petite question : comment faire un radar en utilisant la mémoire d'un jeu comme pour les munitions ?
 
Mar 30, 2011
1,014
1
944
In Your Ass
avec la position des joueur
codé en mémoire sous forme de 3 Float

sur ce jeux j ai déduit ces adresses a partir d une recherche sur le nom de mon perso
quand j ai trouver le nom j ai continuer a examiner la memoire pendant que je jouais jusqu a trouver les offset de position