IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Besoin d'aide pour convertir du code C en C++ (Write Process Memory)


Sujet :

C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2022
    Messages : 3
    Par défaut Besoin d'aide pour convertir du code C en C++ (Write Process Memory)
    Bonjour à tous,

    Comme dis dans le titre, j'ai besoin d'aide car j'ai du code en C et j'aurais besoin de le convertir en C++ sauf que ça fais 2 jours que je bloque...

    C'est pour ecrire dans la memoire du pc (write process memory). Je suis même prêt a payer si quelqu'un peux m'aider.

    Je ne sais pas si c'est la bonne section pour demander de l'aide?

    j'aurais besoin de convertir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void WriteArray(int Pointer, string Value)
    {
    m.WriteMemory((Pointer).ToString("x"), "bytes", Value);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    public bool WriteMemory(string code, string type, string write, string file = "", Encoding stringEncoding = null, bool RemoveWriteProtection = true)
            {
                byte[] array = new byte[4];
                int num = 4;
                UIntPtr code2 = GetCode(code, file);
                if (code2 == UIntPtr.Zero || code2.ToUInt64() < 65536)
                {
                    return false;
                }
     
                if (type.ToLower() == "float")
                {
                    write = Convert.ToString(float.Parse(write, CultureInfo.InvariantCulture));
                    array = BitConverter.GetBytes(Convert.ToSingle(write));
                    num = 4;
                }
                else if (type.ToLower() == "int")
                {
                    array = BitConverter.GetBytes(Convert.ToInt64(write));
                    num = 4;
                }
                else if (type.ToLower() == "byte")
                {
                    array = new byte[1] { Convert.ToByte(write, 16) };
                    num = 1;
                }
                else if (type.ToLower() == "2bytes")
                {
                    array = new byte[2]
                    {
                        (byte)(Convert.ToInt32(write) % 256),
                        (byte)(Convert.ToInt32(write) / 256)
                    };
                    num = 2;
                }
                else if (type.ToLower() == "bytes")
                {
                    if (write.Contains(",") || write.Contains(" "))
                    {
                        string[] array2 = ((!write.Contains(",")) ? write.Split(' ') : write.Split(','));
                        int num2 = array2.Count();
                        array = new byte[num2];
                        for (int i = 0; i < num2; i++)
                        {
                            array[i] = Convert.ToByte(array2[i], 16);
                        }
     
                        num = array2.Count();
                    }
                    else
                    {
                        array = new byte[1] { Convert.ToByte(write, 16) };
                        num = 1;
                    }
                }
                else if (type.ToLower() == "double")
                {
                    array = BitConverter.GetBytes(Convert.ToDouble(write));
                    num = 8;
                }
                else if (type.ToLower() == "long")
                {
                    array = BitConverter.GetBytes(Convert.ToInt64(write));
                    num = 8;
                }
                else if (type.ToLower() == "string")
                {
                    array = ((stringEncoding != null) ? stringEncoding.GetBytes(write) : Encoding.UTF8.GetBytes(write));
                    num = array.Length;
                }
     
                Imps.MemoryProtection oldProtection = (Imps.MemoryProtection)0u;
                bool flag = false;
                if (RemoveWriteProtection)
                {
                    ChangeProtection(code, Imps.MemoryProtection.ExecuteReadWrite, out oldProtection, file);
                }
     
                flag = Imps.WriteProcessMemory(mProc.Handle, code2, array, (UIntPtr)(ulong)num, IntPtr.Zero);
                if (RemoveWriteProtection)
                {
                    ChangeProtection(code, oldProtection, out var _, file);
                }
     
                return flag;
            }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WriteArray(obj + 0xc1781, "B1 0" + Convert.ToInt32(nmKill.Text).ToString("X") + " 00 00 00");

    Infos: nmKill.Text = listbox dynamic qui donne les infos des joueurs en jeux

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 145
    Billets dans le blog
    4
    Par défaut
    Ce truc n'est pas du C mais du C# et nous ne réalisons pas les exercices, encore moins contre rémunération.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2022
    Messages : 3
    Par défaut
    Citation Envoyé par Bousk Voir le message
    Ce truc n'est pas du C mais du C# et nous ne réalisons pas les exercices, encore moins contre rémunération.

    Oui je me suis tromper c'est du C#. Un exercice?? Ce n'est pas un exercice, simplement un ami a moi qui ma donner du code sauf qu'il est en C# et j'ai besoin de l'avoir en C++..

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 434
    Par défaut
    Le code est "compliqué" parce que c'est du C# et qu'on utilise une API native donc "exporté e C".
    Cela est extrêmement plus simple en C++ car l'utilisation d'une API "exporté en C".
    Le code C# utilise une couche d'abstraction que vous nous fournissez pas.
    Mais en C++ vous n'avez pas besoin d'une couche d'abstraction, utilisez directement l'API du système que vous voulez hacker.

    Pour Windows :
    https://learn.microsoft.com/en-us/wi...eprocessmemory
    https://learn.microsoft.com/en-us/wi...ecommendations

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 391
    Par défaut
    La grosse majorité de ce code consiste à parser des données reçues sous forme de string (probablement dans des textbox de ce qui semble être un cheat engine) et le convertir en tableau de bytes.
    Selon tes besoins (non-spécifiés ici), il est possible qu'on puisse s'en passer. Dans tous les cas, il serait mieux d'avoir ça dans une fonction séparée de celle qui fait l'appel à WriteProcessMemory() (séparation de responsabilité).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Besoin d'aide pour convertir un code python
    Par Just-Soft dans le forum Langage
    Réponses: 6
    Dernier message: 09/06/2019, 15h44
  2. [Débutant] Besoin d'aide pour restructurer mon code autour de l'objet Process
    Par BasicZX81 dans le forum VB.NET
    Réponses: 10
    Dernier message: 01/02/2014, 16h01
  3. [VB.NET] besoin d'aide pour déchiffrer un code
    Par pcdj dans le forum Windows Forms
    Réponses: 10
    Dernier message: 27/06/2006, 11h32
  4. Besoin d aide pour comprendre un code
    Par litlebasic dans le forum Delphi
    Réponses: 4
    Dernier message: 22/06/2006, 13h00
  5. Je besoin d'aide pour terminer mon code
    Par Paulinho dans le forum C++
    Réponses: 7
    Dernier message: 06/11/2005, 23h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo