Je suppose que votre source de programme complet se lit comme
#include <iostream>
using namespace std;
int main()
{
int test;
test = 0x3759F8B0 - 0x100;
cout << &test << endl;
}
Comme @pat déjà mentionné dans le commentaire, votre programme émet le adresse de la variable test
, et non sa valeur. Sur les systèmes d'exploitation modernes, il existe quelque chose appelé «randomisation de la disposition de l'espace d'adressage» (ASLR, voir https://en.wikipedia.org/wiki/Address_space_layout_randomization pour une bonne vue d'ensemble) qui aide à exploiter les vulnérabilités de sécurité pouvant exister dans un programme. L'idée est, qu'à chaque nouveau démarrage d'un programme, les adresses des choses qu'il utilise sont randomisées. Par conséquent, l'adresse des variables changera à chaque lancement avec ASLR activé. ASLR est maintenant une fonctionnalité standard dans les systèmes d'exploitation grand public. Cependant, il peut être désactivé (non recommandé) et sans ASLR, le programme ci-dessus émettrait toujours la même sortie.
Vous envoyez l'adresse de la variable 'test', et non sa valeur. – pat
Quelle est la base de votre expecation qui devrait toujours produire la même valeur? – EJP