Chercher des Offset sur PS3 DEX

Dans tutorial nous allons aborder la création de cheats codes sur PS3 DEX.
Nous utiliserons une PS3 DEX et un PC équipé de Target Manager et les deux connectés ensemble via votre réseau local.

1 - Utilisation de Netcheat 4.37
Nous allons utiliser pour le jeu Gran Turismo 5 en version v2.04 [BCES00569] le logiciel Netcheat 4.37

Il suffit de cliquer sur Connect vous verrez en bas a gauche si vous êtes connecté (connected)

Puis cliquer sur Attach et si votre EBOOT.BIN ou fichier en .SELF a bien été résigné en DEX vous obtiendrai le statut Process Attached en bas a gauche.

2 - Trouver les zones (Ranges) propre a chaque jeu PS3
Nous allons maintenant aller dans le menu Range de Netcheat 4.37

Puis cliquer sur Find Ranges et attendre que le processus se termine.

Voila désormais vous savez ou chercher, c'est a dire dans les différentes zones de la mémoire (Ranges) de la PS3 pour ce jeu.

C'est a dire que vous pouvez chercher pour ce jeu, dans la zone 00010000 a 01F50000 ou 10000000 a 1012000 ou 20000000 a 200C0000 etc....
Vous pouvez sur Netcheat 4.37 sauvegarder les Ranges, ce qui est très pratique. Il suffit de cliquer sur Save et de nommer puis choisir ou enregistrer votre recherche des Ranges.

3 - Passons à la recherche d'une valeur connue (chiffrable) avec Netcheat 4.37
Dans le jeu Gran Turismo 5 en version v2.04 [BCES00569] j'ai une somme de 20 crédits.
Donc dans Netcheat 4.37 nous allons dans le module Search, il y a une case Hex, il faut la cocher si vous voulez mettre une valeur en hexadécimal.
Dans notre exemple je cherche des valeurs en Décimal , c'est à dire celle que vous voyez sur l'ecran de votre jeu.
Après plusieurs recherche dans les différentes zones de la PS3 les Ranges, je cherche dans la zone 40000000 a 42600000.
A Start Adress je rentre 40000000, puis dans Stop Adress je rentre 42600000.
Puis je rentre dans la case Value, avec equal to (car c'est une valeur égal) en 2 bits (XXXX) donc 0020 dans notre cas.
Et valider sur Initial Scan.

Voila le premier scan nous donne 590 possibilités. Il faut donc affiner notre recherche.

Ensuite je fais une course et gagne 4100 crédits de plus. J'ai donc un total de 4120 crédits, que je rentre dans la case Value et valide avec Next Scan.

Et voila nous obtenons notre adresse ou offset pour l'argent.

Nous allons maintenant copier l'adresse ou offset en faisant un clic droit, puis cliquer sur copy.

Maintenant allons dans le menu Codes de Netcheat 4.37 et y coller notre code. Puis le nommer à votre guise.
Si vous voulez que votre code soit tout le temps actif il faudra simplement cocher la case Constant Write.

Vous pouvez également enregistrer vos codes en cliquant sur save as ou save All (si il y en a plusieurs).
Puis choisir le nom que vous lui donner puis l’endroit ou vous voulez les sauvegarder.

4 - Passons a la recherche d'une valeur inconnue (non chiffrable) avec Netcheat 4.37
Toujours avec Netcheat 4.37 nous allons dans le module Search et mettre Unknown Value.
Cherchons par exemple dans la zone 00010000 a 01C30000.
Il faut rentrer dans la case Start Adress 00010000 et dans la case Stop Adress 01C30000.
Dans la case Type, il faut mettre la taille de la valeur que vous rechercher 2, 4 ou 8 bytes.
En général une barre de vie est en 2 bytes, une valeur en Float est en 4 bytes...
Et valider par Initial scan.

Netcheat 4.37 va vous demander de valider vu le nombre de possibilités à afficher, il suffit de répondre oui.

Voila Netcheat 4.37 va scanner et afficher les résultats du premier scan.

Ensuite il reste à peaufiner notre recherche avec toutes les possibilités que nous offre Netcheat 4.37

Equal To
Not Equal To
Less Than
Less Than or Equal
Greater Than
Greater Than Or Equal
Value Between
Pointer
Increased
Inceased By
Decreased
Decreased By
Changed
Unchanged

Pour affiner plus vite notre recherche, il suffit après le premier scan vu que la valeur recherche n'a pas changée de mettre dans la caseSearch Unchanged et de valider par Next Scan.

Puis après des que votre valeur à changée vous affiner si elle a baissé par Decreased ou si elle a augmentée par Increased.
Et ainsi de suite jusqu’à trouver votre valeur

5 - Breakpoint sous Pro DG Debugger
Après avoir trouver l'offest ou adresse et que vous voulez trouver l'adresse ou offset en ASM, le breakpoint est la clé.
Dans Pro DG Debugger, il suffit d'aller dans le menu Debug, puis de choisir Hardware Breakpoint.

Ensuite il suffit de rentrer l'offset ou adresse, dans cet exemple 0x40024158 puis de cocher la case On Write et valider par ok.

Voila des que la valeur de l'offset ou de l'adresse a variée le breakpoint se déclenche et la console freeze. C'est normal il faut pas s’inquiéter. Il suffit pour revenir à la normale de decocher dans Hardware Breakpoint le On Write et puis dans le menu Debug soit de cliquer sur Go ou appuyer sur F5.

6 - Un exemple concret de code en ASM
Pour le jeu Rune Factory Oceans v1.0 [BLES01550] nous allons cherche le code Max Money on Buy.
J'ai déjà au préalable trouve l'adresse ou l'offset de l'argent 0x31F32500. Avec ProDG Debugger, dans le menu Debug aller sur Hardware breakpoint sur 0x31F32500 et sur on WRITE.
Mes tunes baisse quand j’achète quelque chose. Le Breakpoint se declanche et la PS3 freeze.
Mon Breakpoint m'indique l'adresse et l'instruction.
00135E58 90660004 stw r3,0x4(r6)

Pro DG Debugger, a également la possibilité de nous montrer les registers

Dans notre cas r3= la valeur actuelle des tunes : r3=0000000005F08DCB
Et r5= la valeur max des tunes : r5=0000000005F5E0FF
Donc on va changer le r3 en r5.
00135E58 90660004 stw r3,0x4(r6) instruction origine
00135E58 90A60004 stw r5,0x4(r6) instruction modifiée
Soit vous modifier dans Pro DG Debugger l'instruction ou soit vous la modifie avec un logiciel externe. Sur la wii j'utilise asmwiird.exe

Et voila des que la valeur des tunes baisse j'obtiens aussitôt les tunes Max.

ControlConsole
Max Money on Buy [Crapulecorp]
offset: 0x00135E58, size: 32b, input: 90A60004

NetCheat
Max Money on Buy [Crapulecorp]
0 00135E58 90A60004

Tutoriel réalisé par Crapulecorp pour ConsoleX Bordeaux

Image: