cs_anosan
Messages postés19Date d'inscriptionsamedi 8 février 2003StatutMembreDernière intervention 3 novembre 2004
-
11 août 2003 à 17:30
guiguikun
Messages postés92Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention 1 octobre 2003
-
11 août 2003 à 19:53
Salut,
J'aimerais savoir comment spécifier à un pointeur quelle adresse il doit pointer (sachant que cette adresse n'est pas celle d'une variable!).
Merci.
guiguikun
Messages postés92Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention 1 octobre 20031 11 août 2003 à 18:00
Ce n'est pas la première fois que je vois ca dans un code source.
Quel est l'interet de pointer une adresse qui n'est pas une variable ? Qu'est-ce qu'on peut faire avec ? Pointer le stack ?
cs_anosan
Messages postés19Date d'inscriptionsamedi 8 février 2003StatutMembreDernière intervention 3 novembre 2004 11 août 2003 à 18:08
Salut,
J'aivais bien essayé cette solution, mais mon compilateur (Borland C++ Builder6) donne le message d'erreur [C++ Error] Cannot convert 'int' to 'void *'.
Il comprend rien!! Et moi non plus!! pas lol :(
kk1 aurait une autre suggestion ?
> Salut,
>
> void * pointeur;
> pointeur = 0x.....; // l'adresse vers laquel ton pointeur pointera.
>
> fait gaffe quand meme aux violations d'acces (ne pointe pas n'importe ou).
cs_anosan
Messages postés19Date d'inscriptionsamedi 8 février 2003StatutMembreDernière intervention 3 novembre 2004 11 août 2003 à 18:51
vecchio56, si c'est de l'humour que tu fais, on a pas le même!! Ce que tu decris, ca s'appelle un virus, et je ne fais pas là dedans!!
Pour repondre à guiguikun, pointer à une adresse qui n'est pas une variable permet de pointer justement où tu veux. Après, tu en fait ce que tu veux: ecrire n'importe où dans la memoire ( comme le dit si bien vecchio56), lire n'importe où, copier une partie (dump), faire des routine d'intégrité d'un process (infection virus), etc...
guiguikun
Messages postés92Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention 1 octobre 20031 11 août 2003 à 19:53
Je viens de faire un test
void *ptr = (void *)0x0;
int *num;
while (ptr = (int *)ptr+1) {
num = (int *)ptr;
cout<<*num<<endl;
}
la ligne "cout<<*num<<endl;" plante. Comment faites-vous pour lire dans un bloc qui ne vous appartient pas ? Comment savoir si il est valide ou non ? (là a mon avis il n'est pas valide)