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

Windows Discussion :

Problème avec ReadProcessMemory


Sujet :

Windows

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 11
    Points : 9
    Points
    9
    Par défaut Problème avec ReadProcessMemory
    Bonjour,

    J'aimerais utiliser la fonction ReadProcessMemory et pour cela, je fais quelques tests.
    J'essaye d'abord de lire la mémoire du programme lui-même avant d'essayer lire la mémoire d'un programme extérieur, mais je n'y arrive pas.

    Voilà le code

    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
    #include <iostream>
    #include "getwindow.hpp"
    
    using namespace std;
    
    int main(int argc, char* argv[]) {
    
        int someValue(10);
    
        const HWND window(getWindowFromTitle("Memory"));
        HANDLE handle;
        char buf[256];
        unsigned long bytesRead(0);
    
        if(!window) {
    
            cerr << "Can't find the window" << endl;
            exit(1);
        }
    
        unsigned long pid;
    
        GetWindowThreadProcessId(window, &pid);
        handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
    
        if(!handle) {
    
            cerr << "Can't open the process" << endl;
            exit(1);
        }
    
        ReadProcessMemory(handle, &someValue, buf, sizeof(int), &bytesRead);
    
        cout << "Bytes read: " << bytesRead << endl;
        cout << "Data: " << *reinterpret_cast<int*>(&buf) << endl;
        CloseHandle(handle);
    
        return 0;
    }
    Je m'attendais à obtenir "10" à la sortie, mais le programme affiche un nombre qui ne correspond pas du tout...
    Merci de votre future aide

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Tu ne contrôles pas le retour de ReadProcessMemory(), et je ne vois pas trop pourquoi tu t'attends à ce que &someValue soit valide comme "adresse distante" (surtout si tu as un Windows assez récent pour pratiquer l'Address Space Layout Randomization).

Discussions similaires

  1. Réponses: 11
    Dernier message: 22/03/2011, 11h09
  2. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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