Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Accés a la memoire logiciel



  1. #1
    Twcd

    Accés a la memoire logiciel


    ------

    Bonjour,

    J'ai un petit projet en C# qui consisterais a récupérer d'un logiciel de mix (DJ) une variable (double) qui est enfaite a quel moment ou nous somme dans la musique.
    Le but de tout sa serait de synchroniser musique / lumière sans avoir a lancer la musique via un autre logiciel. Mais aussi d'afficher en régie les musique qui vont être lue.

    En soit je n'est pas vraiment de soucis a lire la mémoire j'ai d’ailleurs déjà les adresse de mes variable en revanche, j'ai du mal a comprendre comment faire en sorte de ne pas avoir a retaper l’adresse de ma variable a chaque fois dans mon programme.
    Je ne suis pas sur mais j'ai une théorie, contredisait moi si je me trompe. La variable serait toujours a la même adresse dans le programme donc pour y accéder il suffirait de prendre la "base" et d'ajouter l'adresse de ma variable en question ? Est ce possible de faire comme sa ?
    Ou si vous avez une quelconque autre technique je suis preneur.

    Merci

    -----

  2. Publicité
  3. #2
    Spazi

    Re : Accés a la memoire logiciel

    Votre théorie est sur la bonne voie.

    Mais ça dépend, votre variable peut être à un offset fixe d'une "base", mais ce n'est pas forcément vrai.
    Néanmoins, il doit existe une chaîne d'offset qui pointe vers votre variable (vu qu'il faut bien que le programme sache où est la variable)

    Le plus simple pour faire ce que vous voulez est d'utiliser Cheat Engine, et de faire une recherche de pointeur sur l'emplacement de votre variable double.
    Une fois les offset trouvés, côté C#, vous n'aurez qu'à faire les lecture correspondantes appropriées pour récupérer l'adresse de votre variable.

  4. #3
    Twcd

    Re : Accés a la memoire logiciel

    Justement je viens d'en arriver la mais je coince...
    J'ai obtenue les offset suivant : 138,150,40,A8,2A0,118,1A8.
    Du coup pour chacun d'entre eux je fait ceci :
    Sans titre.png
    Code:
                Process[] processes = Process.GetProcessesByName("rekordbox");
                IntPtr BaseAddress = IntPtr.Zero;
                Process MYPRoc = processes[0];
                foreach (ProcessModule module in MYPRoc.Modules)
                {
    
                    if (module.ModuleName.Contains("rekordbox"))
                    {
                        BaseAddress = module.BaseAddress;
    
                    }
                }
    IntPtr Base = IntPtr.Add(BaseAddress, 0x03BA8098 );
    VAMemory vam = new VAMemory("rekordbox");
    int localPlayer = vam.ReadInt32((IntPtr)Base);
    int buffer = vam.ReadInt32((IntPtr)(localPlayer + 0x1A8));
    buffer = vam.ReadInt32((IntPtr)(buffer + 0x118));
    buffer = vam.ReadInt32((IntPtr)(buffer + 0x2A0));
    buffer = vam.ReadInt32((IntPtr)(buffer + 0xA8));
    buffer = vam.ReadInt32((IntPtr)(buffer + 0x40));
    buffer = vam.ReadInt32((IntPtr)(buffer + 0x150)); 
    IntPtr temps = (IntPtr)(buffer + 0x138);
    Console.WriteLine(vam.ReadDouble(pScore));
    Mais j’obtiens un 0 en valeur... Ou est ce que je me trompe ?

    Merci
    Dernière modification par Twcd ; 10/05/2020 à 18h29.

  5. #4
    Spazi

    Re : Accés a la memoire logiciel

    C'est un adressage 64 bits, pas 32

    A part ça, cela semble correct, et ressemble à un de mes codes qui fait ça également (à part l’utilisation de VAMemory)
    Dernière modification par Spazi ; 10/05/2020 à 19h04.

  6. #5
    Twcd

    Re : Accés a la memoire logiciel

    Je viens tout juste de me rendre compte de mon erreur ...
    Code:
    Int32 buffer = vam.ReadInt32((IntPtr)localPlayer + 0x1A8);
    J'ai remplacer ceci par :

    Code:
    Int64 buffer = vam.ReadInt64((IntPtr)localPlayer + 0x1A8);
    Merci pour ton aide !

  7. A voir en vidéo sur Futura

Discussions similaires

  1. processus et acces aux ressources mémoire de la RAM
    Par cosmoff dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 27/12/2018, 13h44
  2. latence d'accès à une mémoire
    Par Electro_Red dans le forum Électronique
    Réponses: 4
    Dernier message: 10/11/2012, 20h57
  3. acces mémoire pic 16f57
    Par parilla77 dans le forum Électronique
    Réponses: 0
    Dernier message: 09/10/2009, 14h21
  4. MicroSD multi acces, memoire partagée
    Par damienl dans le forum Électronique
    Réponses: 5
    Dernier message: 24/02/2009, 08h30
  5. Vhdl-accès à la mémoire
    Par lignux dans le forum Électronique
    Réponses: 3
    Dernier message: 13/02/2007, 18h53