Tutoriel - Touts savoir sur la création de tools pour RTE (Real Time Editing)

Westiix

Fortnite Player || PHP & VB.NET
Premium
Inscription
5 Octobre 2011
Messages
2 219
Réactions
88
Points
12 753
[tabs]

[tab=Les bases]
1. Langages de programmation

Il y plusieurs langage de programmation qui permettent de faire des "tools RTE" .
Dans ce tutoriel, on va en voir principalement deux, le C# (C Sharp) et le VB.NET .

Logiciel utilisé le plus souvent pour programmé en C# (C Sharp) :
-
Scan Virus :


Logiciel utilisé le plus souvent pour programmé en VB.NET :
-
Scan Virus :


2. Les offsets

2.1 . Trouvé la différence entre chaque client

Pour trouvé la différence entre chaque client, on va devoir faire un calcule... et on va l'effectué avec la calculatrice en mode programmeur ;)

Tu3gtkb.png


Puis vous devez réglé la calculatrice comme ceci :
tDUVe5m.png


Pour trouvé la différence entre deux client il suffit de faire des maths, et plus précisément une soustraction.

Exemple :
FCA41E = Offset GodMod du client 0
FCA69E = Offset GodMod du client 1

FCA69E - FCA41E = 280

FCA69E + 280 = Offset GodMod du client 2
FCA69E + 280 = FCA91E

2.2 . Les offsets quand on programme son " tools "

Quand vous programmerez vôtre tools, les offsets devront toujours être comme sa :

En C# (C Sharp) :
0x + TON OFFSET

Exemple : 0xFCA41E

En VB.NET :
&H + TON OFFSET

Exemple :
&HFCA41E​
[/tab]
[tab=Nôtre premier tools en VB.NET]
1. Création du projet et mise en forme + connexion
Requis :
- ps3tmapi_net : (scan virus : // j'ai rien modifier au DLL !)
- PS3Lib : (scan virus : )

On commence tout de suite par crée un nouveau projet :

51q4.png


Ensuite, une fois le projet crée, on va tout de suite importé les DLL requis au bon fonctionnement de notre futur tools :


1) Clique droit sur le nom de vôtre projet dans la liste de droite
2) Aller cliqué sur
" Ajouter une référence "
3) Chargé les 2 DLL téléchargé plus haut
m369.png



Ensuite on va déclaré les DLL dans le futur tools :

sSdoyaV.png

CODE :
Code:
Imports PS3Lib
Imports PS3TMAPI


Maintenant faut ajouté des lignes indispensable en-dessous de " Public Class Form1 " :
vmql.png

CODE :
Code:
Private processIDs As UInteger()
    Private ProcessID As UInteger


Passons au connexion, placé deux bouton sur vôtre form (peut importe comment) :
wrwf.png



Cliqué 2 fois sur vôtre bouton "Connect" et inséré lui ce code :
PRu4adc.png

CODE :
Code:
PS3TMAPI.InitTargetComms()
        PS3TMAPI.Connect(0, vbNullString) 'Connecte le tools à PS3

Résultat :
77aq.png



Maintenant au tour du bouton " Attach Process " :
cw5c.png

CODE :
Code:
Try
            PS3TMAPI.GetProcessList(0, processIDs) 'Obtient le 1er processus
            Dim uProcess As ULong = processIDs(0)
            ProcessID = Convert.ToUInt32(uProcess)
            PS3TMAPI.ProcessAttach(0, PS3TMAPI.UnitType.PPU, ProcessID)
            PS3TMAPI.ProcessContinue(0, ProcessID)
            Dim Info As String = "The Process 0x" & ProcessID.ToString("X8") & " Has Been Attached !"
            MessageBox.Show(Info, "Process Ready!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
        Catch Ex As Exception
            MessageBox.Show(Ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
        End Try

Pour rendre plus propre vôtre code, je vous conseil d'ajouté ceci au dessus du code de vôtre 1er bouton :
20HKsrR.png

CODE :
Code:
#Region "Connexion PS3"

Et ceci après vôtre 2ème bouton :
cv71.png



Après on peut refermé la catégorie "Connexion PS3" et sa donne sa :
pF9WUw8.png


Les connexions, c'est fait ! Déjà une bonne chose de faite :)

2. Nôtre première fonction (pour le tutoriel, pour MW3)

On commence par placé nos "objets" , pour ma part je vais mettre une " CheckBox " :
68g.png


Maintenant on va voir pour crée une fonction qui calcule les offsets pour " la vision " , on va placé cette fonction après la catégorie "Connexion PS3" :
rNDThbh.png

CODE :
Code:
Public VisionClient0 As Integer = &H110A293 'Cette offset correspond à la vision du client0

    Public Function Vision(ByVal clientNum As Integer) As Integer 'Cette fonction retournera le résultat d'un calcule (clienNUm correspond à un chiffre qui se trouvera dans le calcule)
        Return VisionClient0 + (clientNum * &H3980) 'Ce calcule se résume à :  &H110A293 + (clienNum X &H3980)  Ex : &H110A293 + (1 * &H3980)  correspond a    &H110A293 + &H3980 = &H110DC13
    End Function


Ensuite on va dans le code de nôtre CheckBox on y ajouté ceci :
byx2.png

CODE :
Code:
If REDBOXc0.Checked = True Then 'Si la CheckBox est coché ALORS
            Dim redboxclient0 As Byte() = New Byte() {&H55} 'On remplace les bytes actuelle par 55 à l'offset calculé par nôtre fonction (pour la vision)
            PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, Vision(0), redboxclient0) 'La on a fait appel à la fonction que l'on a crée juste avant. 0 = client0

            'Exemple pour le client 1:
            '
            ' Dim redboxclient1 As Byte() = New Byte() {&H55}
            ' PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, Vision(1), redboxclient1)
        Else 'SINON
            Dim redboxclient0 As Byte() = New Byte() {&H0} ' 0 = désactive le RedBox
            PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, Vision(0), redboxclient0)
        End If

Voilà, nôtre première fonction est codé !
3. Récupéré le nom des joueurs en partie

On ajoute tout de suite un bouton et des 17 textBox sur nôtre form (le 1er en haut c'est le client 0 et le dernier c'est le client 17) :
vx23.png


Maintenant on va crée une fonction qui permet de trouvé les offsets pour les noms des joueurs en partie (je l'ai mise en dessous de l'autre fonction) :
ubXtxaq.png

CODE :
Code:
Public NameClient0 As Integer = &H110D694
    Public Function GetClientName(ByVal clientNum As Integer) As Integer
        Return NameClient0 + (clientNum * &H3980)
    End Function

Vous devrez déclaré une importation tout en autre de form :
wmut.png


Maintenant passons au code du bouton "Get Client" :
HQmPfXf.png

CODE :
Code:
' CECI c'est pour le nom du client 0
        Dim GetClientNameC0 As Byte() = New Byte(&H25) {} 'Recupere 25 bytes en partant de l'offset (calculé par nôtre fonction)
        PS3TMAPI.ProcessGetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, GetClientName(0), GetClientNameC0)
        C0.Text = Encoding.ASCII.GetString(GetClientNameC0) 'On converti les 25 bytes récupéré en Texte et on l'affiche dans la 1er textBox tout en haut

        ' CECI c'est pour le nom du client 1
        Dim GetClientNameC1 As Byte() = New Byte(&H25) {} 'Recupere 25 bytes en partant de l'offset (calculé par nôtre fonction)
        PS3TMAPI.ProcessGetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, GetClientName(1), GetClientNameC1)
        C1.Text = Encoding.ASCII.GetString(GetClientNameC1) 'On converti les 25 bytes récupéré en Texte et on l'affiche dans la 2eme textBox en partant du haut

        ' CECI c'est pour le nom du client 2
        Dim GetClientNameC2 As Byte() = New Byte(&H25) {} 'Recupere 25 bytes en partant de l'offset (calculé par nôtre fonction)
        PS3TMAPI.ProcessGetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, GetClientName(2), GetClientNameC2)
        C2.Text = Encoding.ASCII.GetString(GetClientNameC2) 'On converti les 25 bytes récupéré en Texte et on l'affiche dans la 3eme textBox en partant du haut

        ' CECI c'est pour le nom du client 3
        Dim GetClientNameC3 As Byte() = New Byte(&H25) {} 'Recupere 25 bytes en partant de l'offset (calculé par nôtre fonction)
        PS3TMAPI.ProcessGetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, GetClientName(3), GetClientNameC3)
        C3.Text = Encoding.ASCII.GetString(GetClientNameC3) 'On converti les 25 bytes récupéré en Texte et on l'affiche dans la 4eme textBox en partant du haut

        ' CECI c'est pour le nom du client 4
        Dim GetClientNameC4 As Byte() = New Byte(&H25) {} 'Recupere 25 bytes en partant de l'offset (calculé par nôtre fonction)
        PS3TMAPI.ProcessGetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, GetClientName(4), GetClientNameC4)
        C4.Text = Encoding.ASCII.GetString(GetClientNameC4) 'On converti les 25 bytes récupéré en Texte et on l'affiche dans la 5eme textBox en partant du haut

        ' CECI c'est pour le nom du client 5
        Dim GetClientNameC5 As Byte() = New Byte(&H25) {} 'Recupere 25 bytes en partant de l'offset (calculé par nôtre fonction)
        PS3TMAPI.ProcessGetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, GetClientName(5), GetClientNameC5)
        C5.Text = Encoding.ASCII.GetString(GetClientNameC5) 'On converti les 25 bytes récupéré en Texte et on l'affiche dans la 4er textBox en partant du haut

Voilà, à vous de continuez jusqu'au client 17 ;)

4. Les stats


On va voir pour crée un NumericUpDown qui changera le prestige.

On commence tout de suite par placé nôtre NumericUpDown etc :
yzc6.png


Passons au code du NumericUpDown :
Code:
If PRESTIGES.Value = 0 Then
            Dim PRESTIGE0 As Byte() = New Byte() {&H0}
            PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, &H1C1947C, PRESTIGE0)
        End If

        If PRESTIGES.Value = 1 Then
            Dim PRESTIGE1 As Byte() = New Byte() {&H1}
            PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, &H1C1947C, PRESTIGE1)
        End If

        If PRESTIGES.Value = 2 Then
            Dim PRESTIGE2 As Byte() = New Byte() {&H2}
            PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, &H1C1947C, PRESTIGE2)
        End If

        If PRESTIGES.Value = 3 Then
            Dim PRESTIGE3 As Byte() = New Byte() {&H3}
            PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, &H1C1947C, PRESTIGE3)
        End If

        If PRESTIGES.Value = 4 Then
            Dim PRESTIGE4 As Byte() = New Byte() {&H4}
            PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, &H1C1947C, PRESTIGE4)
        End If

        If PRESTIGES.Value = 5 Then
            Dim PRESTIGE5 As Byte() = New Byte() {&H5}
            PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, &H1C1947C, PRESTIGE5)
        End If

        If PRESTIGES.Value = 6 Then
            Dim PRESTIGE6 As Byte() = New Byte() {&H6}
            PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, &H1C1947C, PRESTIGE6)
        End If

        If PRESTIGES.Value = 7 Then
            Dim PRESTIGE7 As Byte() = New Byte() {&H7}
            PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, &H1C1947C, PRESTIGE7)
        End If

        If PRESTIGES.Value = 8 Then
            Dim PRESTIGE8 As Byte() = New Byte() {&H8}
            PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, &H1C1947C, PRESTIGE8)
        End If

        If PRESTIGES.Value = 9 Then
            Dim PRESTIGE9 As Byte() = New Byte() {&H9}
            PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, &H1C1947C, PRESTIGE9)
        End If

        If PRESTIGES.Value = 10 Then
            Dim PRESTIGE10 As Byte() = New Byte() {&HA}
            PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, &H1C1947C, PRESTIGE10)
        End If

        If PRESTIGES.Value = 11 Then
            Dim PRESTIGE11 As Byte() = New Byte() {&HB}
            PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, &H1C1947C, PRESTIGE11)
        End If

        If PRESTIGES.Value = 12 Then
            Dim PRESTIGE12 As Byte() = New Byte() {&HC}
            PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, &H1C1947C, PRESTIGE12)
        End If

        If PRESTIGES.Value = 13 Then
            Dim PRESTIGE13 As Byte() = New Byte() {&HD}
            PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, &H1C1947C, PRESTIGE13)
        End If

        If PRESTIGES.Value = 14 Then
            Dim PRESTIGE14 As Byte() = New Byte() {&HE}
            PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, &H1C1947C, PRESTIGE14)
        End If

        If PRESTIGES.Value = 15 Then
            Dim PRESTIGE15 As Byte() = New Byte() {&HF}
            PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, &H1C1947C, PRESTIGE15)
        End If

        If PRESTIGES.Value = 16 Then
            Dim PRESTIGE16 As Byte() = New Byte() {&H10}
            PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, &H1C1947C, PRESTIGE16)
        End If

        If PRESTIGES.Value = 17 Then
            Dim PRESTIGE17 As Byte() = New Byte() {&H11}
            PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, &H1C1947C, PRESTIGE17)
        End If

        If PRESTIGES.Value = 18 Then
            Dim PRESTIGE18 As Byte() = New Byte() {&H12}
            PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, &H1C1947C, PRESTIGE18)
        End If

        If PRESTIGES.Value = 19 Then
            Dim PRESTIGE19 As Byte() = New Byte() {&H13}
            PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, &H1C1947C, PRESTIGE19)
        End If

        If PRESTIGES.Value = 20 Then
            Dim PRESTIGE20 As Byte() = New Byte() {&H14}
            PS3TMAPI.ProcessSetMemory(0, PS3TMAPI.UnitType.PPU, ProcessID, 0, &H1C1947C, PRESTIGE20)
        End If

Voilà voilà, sa sera tout je pense .
(Pour le C#, j'essayerai beaucoup plus tard car la j'ai pas assez de temps)
[/tab]
[tab=Credit]
thibault62118 (pour m'avoir apprit pleins de chose)
http://induste.com/members/thibault62118.32313/

[/tab]
 
Dernière édition:

Père Fouras

Membre
Inscription
28 Décembre 2011
Messages
405
Réactions
175
Points
3 963
L'intervale entre chaque client c'est 3980 et non 280 D:
 
Dernière édition:

Westiix

Fortnite Player || PHP & VB.NET
Premium
Inscription
5 Octobre 2011
Messages
2 219
Réactions
88
Points
12 753
Même pas de crédit a moi ? C'est moi qui te l'a expliquer... + Avoir mit le get client name sans mon autorisation ... Bien la **** ? ;)
PS : L'intervale entre chaque client c'est 3980 et non 280 D:
Je t'ajoute en crédit mais pour le Get Client Name je pense pas que c'est toi qui la découvert mais merci quand même d'avoir partagé avec moi ton savoir, je fait maintenant de même .

PS: Pour le GetClientName j'ai bien mit 3980 dans ma fonction ;)
 

Père Fouras

Membre
Inscription
28 Décembre 2011
Messages
405
Réactions
175
Points
3 963
Je t'ajoute en crédit mais pour le Get Client Name je pense pas que c'est toi qui la découvert mais merci quand même d'avoir partagé avec moi ton savoir, je fait maintenant de même .

PS: Pour le GetClientName j'ai bien mit 3980 dans ma fonction ;)
Non j'te parle de l'intervale avec la calculatrice , et le get client name si j'les découvert tout seul x) Et sa fait un moment que je l'ai.
 

Westiix

Fortnite Player || PHP & VB.NET
Premium
Inscription
5 Octobre 2011
Messages
2 219
Réactions
88
Points
12 753
Non j'te parle de l'intervale avec la calculatrice , et le get client name si j'les découvert tout seul x) Et sa fait un moment que je l'ai.
Oui bas maintenant vu que y a des modes menu et tout.. Autant partagé ces connaissances (même peu, comme moi), sa fera des heureux au moins .
 

DenZy

Membre
Inscription
30 Décembre 2012
Messages
89
Réactions
15
Points
2 460
J'ai pas compris au niveau des OFFSET ! .. Explique moi un peut mieux avec la calculatrice et donne moi un exemple sinon je comprend rien :(
 

DenZy

Membre
Inscription
30 Décembre 2012
Messages
89
Réactions
15
Points
2 460
En fin de compte, j'ai fait 18client du god mod de mon tools, mais maintenant , comment je fait pour trouver les offset de par exemple ( UFO Mod, Laser, ect .. ) ?
 
D

deleted229251

Salut , J'ai un probléme quand je fait connect to PS3 puis attach target mon programme quitte instantanément quelqu'un peu m'aider. ?
 
Haut