Lecture adresse

Résolu
shub85 Messages postés 23 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 27 février 2008 - 19 févr. 2008 à 11:33
shub85 Messages postés 23 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 27 février 2008 - 20 févr. 2008 à 08:39
Bonjour,
Je voulais savoir si il etait possible de lire une le contenue d'une adresse.
Je voudrais récupérer une série de valeurs en hexa à l'adresse 0x00C9F0C0 par ex.
merci de votre aide ;)

7 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
19 févr. 2008 à 21:59
Ce n'est pas les adresses constantes dont Windows empêche l'accès mais la mémoire non alloué.
Par exemple, on peut très bien faire ceci:
int *c = (int*)malloc(sizeof(int)*5); // malloc à retourné 0x00362f50
int *i = (int*)0x00362f50;

*c = 5;

printf("%d\n", *i);

Cependant, il est clair qu'il n'est strictement pas envisageable de faire cela.

C++ (@++)<!--
3
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
19 févr. 2008 à 12:03
Salut,
Récuperer une série de valeur ? Ca veut dire que tu connais le type de la valeur que tu souhaites récupérer ?
Car une adresse ne représente les données que d'un seul octet.
Si la valeur a récuperer est un int, tu devras alors caster ton adresse en int * car un int est stocké sur 4 octets. Tu devras donc lire les adresses 0x00C9F0C0, 0x00C9F0C1, 0x00C9F0C2, 0x00C9F0C3.

Shell
0
shub85 Messages postés 23 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 27 février 2008
19 févr. 2008 à 12:08
Oui je sais de quel type sont mes valeurs, chaque valeur est codé en hexa car elle représente un caractère ascii.
Mais je ne sais tjs pas comment faire.

Je voudrais récupérer par  ex la valeur 1C à l'adresse 0x00C9F0C0, etc...
0
cs_Amay Messages postés 3 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 19 février 2008
19 févr. 2008 à 12:22
Bonjour,
Je voulais savoir s’il était possible de rechanger une icone d'exécutable (je l'ai déjà échanger une fois et je n'arrive plus a l'échanger). Je travail en C++ sur Borland Builder6, SVP s'il ya quelqu'un qui peut m'aider qu'il me répond bientôt et merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
shub85 Messages postés 23 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 27 février 2008
19 févr. 2008 à 12:24
T'est pas obligé de poser une question qui n'as rien avoir avec mon post à la suite de mon post!!
0
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
19 févr. 2008 à 12:45
Bonjour,

Il suffit de déclarer un pointeur du bon type et de l'initialiser avec cette adresse.

Exemples :

1) Si la valeur pointée est un "int" :
int* p = (int*)0x00C9F0C0;
printf("valeur = %d\n",*p);

2) Si la valeur pointée est une chaîne de caractères :
char* p = (char*)0x00C9F0C0;
printf("chaîne = %s\n",p);

3) Si la valeur pointée est une structure de données :
struct STRUCTURE
{
   int    i;
   double d;
   bool   b;
   char*  sz;
};
STRUCTURE* p = (STRUCTURE*)0x00C9F0F0;
printf("i  = %d\n" ,p->i); // p->i ou (*p).i
printf("d  = %lf\n",p->d);
printf("b  = %s\n" ,p->b ? "VRAI" : "FAUX");
printf("sz = %s\n" ,p->sz);

Bon ! ça c'est l'utilisation d'un pointeur ! Mais quant à l'initialiser avec une valeur constante, c'est autre chose !
Sous Windows ça plantera.

Jean-François
0
shub85 Messages postés 23 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 27 février 2008
20 févr. 2008 à 08:39
En gros si je comprends bien, ce que je veut faire n'est pas envisageable...
Merci de vos aides!!
0
Rejoignez-nous