begin process at 2012 05 30 11:14:07
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

API

 > 

ReadProcessMemory


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

ReadProcessMemory

lundi 24 novembre 2003 à 01:49:24 | ReadProcessMemory

ymca2003

Salut,

J'essaye d'utiliser la fonction ReadProcessMemory pour lire le contenu de la mémoire d'un processus mais je n'y arrive pas.

Lorsque j'appel cette fonction avec le handle d'un processus externe, l'accès est refusé (je ne doit pas mettre les bon accès)

Pour le handle du processus lui-même, la fonction me retourne dans le buffer l'adresse demandée dans les 4 premiers octets et rien dans le reste :

DWORD dwPID = GetCurrentProcessId();
Handle hProcess = OpenProcess(PROCESS_VM_READ, FALSE, dwPID);

BYTE tab[16];
memset(tab, 0xCC, 8);
DWORD dwAddress = 0x12345678;
DWORD nb = 0;
ReadProcessMemory(hProcess, &dwAddress, tab, 8, &nb))


j'obtient :
nb = 8;
tab = {0x78, 0x56, 0x34, 0x12, 0xCC, 0xCC, 0xCC, 0xCC}

Si quelqu'un a une idée, merci
lundi 24 novembre 2003 à 13:18:03 | Re : ReadProcessMemory

Arnotic

Administrateur CodeS-SourceS
Salut,

ReadProcessMemory(hProcess, &dwAddress, tab, 8, &nb))

Tu demandes à lire 8 octets (bytes) donc c'est normal.

L'avant dernier paramètre de cette fonction permet de définir le nombre d'octects que tu veux lire :
nSize
[in] Number of bytes to be read from the specified process.

Pour la lecteur de d'autre HANDLE c'est normal tu n'a pas le droits de lire d'autres espaces mémoires. Pour le faire il faut que tu lances le process depuis ton appli à toi en modifiant les privilèges pour le debugger à ce moment la tu pourras même ecrire dans la mémoire.

@+

------------------------------------------
Arnotic
Mail : info@mistersp.com
lundi 24 novembre 2003 à 14:20:28 | Re : ReadProcessMemory

ymca2003

Merci, en fait, j'ai trouvé l'erreur :

ReadProcessMemory(hProcess, (LPCVOID) dwAddress, tab, 8, &nb))

le 2 ème paramètre est directement l'addresse où on veut lire et pas l'adresse de la variable contenant l'adrese que l'on veut lire.
Donc c'était normal que je récupérais dans tab cette adresse.

Sinon cette fonction permet d'aller lire dans les autres process dans les zone smémoires accessibles :


"Any process that has a handle with PROCESS_VM_READ access can call the function. The process whose address space is read is typically, but not necessarily, being debugged."


Cette discussion est classée dans : fonction, tab, processus, readprocessmemory, 0xcc


Répondre à ce message

Sujets en rapport avec ce message

probleme avec la fonction GetAsyncKeyState() [ par aardman ] Bonjours,Je débute dans le c, et j'ai un petit probleme avec cette fonction.Je n'arrive pas a la faire fonctionner avec un int comme argument. Par exe fonction d'alloaction dynamique [ par tomsawyerbelgique ] Pour une allocation dynamique d'un tableau à deux dimensions. Comme celle ci:cout // Initalisation int** tab = new int*[p_size1_tab]; for(in tableau a 2 dim [ par Kevin972 ] salut a tous!!g un probleme pour passer en parametre un tableau a 2 dimensions:fonction1(void){ float tab[400][400];............ fonction(tab);}fo Allocation dynamique dans une fonction [ par Veovis ] Salut,Toujours dans mon projet de TP, j'ai un petit soucis avec l'allocation dynamique dans une fonction. Ce que je voudrais faire c'est quand le tabl tableau de struct et fonction en C [ par sim51 ] Bonjour à tous. J'ai un petit problème de syntax, après plusieurs recherche sur le net, je n'ai pu ni affirmer ou ni infirmer la validation de mon cod copier des données en memoire [ par rudybaka ] Bonjour je suis etudiant et j'aurai besoin d'aide pour une question de TP :Ecrire une fonction qui trie les valeurs d'un tableau d'éléments de type qu Langage C: Problème de retour de Pointeur dans une fonction [ par loic911 ] SalutJ'aimerais bien renvoyer l'endroit d'un pointeur sur un tableau a deux dimension à une autre fonction exemple: Tableau en C [ par Mickylord ] Bonsoir a tous !Voici ma question :J'ai une fonction principale, main(), et une autre fonction tab(). Je voudrais déclarer un tableau dans la fonction Nouveau processus ! [ par gdpasmini ] Salut ! Quelqu'un pourrait il me dire si il est possible de créer un processus avec l'API windows ou autre pour exécuter une fonction? Je fais une IH tableau d'entier. [ par gdpasmini ] Hello !j'ai un petit soucis avec une fonction qui renvoi un tableau en parametre... voila les details :Dans mes fonctions : int * boutonDecodFlux(void


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales