Возьмите этот код С, напримеркак назначаются виртуальные адреса?
#include <stdio.h>
#include <stdlib.h>
int main() {
int x;
int* y = (int *) malloc(10*sizeof(int));
printf("%p\n",&x);
printf("%p\n",y);
printf("%p\n",&(y[1]));
while(1);
return 0;
}
Что будет печатать виртуальные адреса, которые выглядят что-то как этот
0x7ffd4e96d214
0x908010
0x908014
виртуальные адреса будут отличаться каждый раз, когда вы запускаете двоичный файл, который заставлял меня думать, как виртуальный адрес Реально ли выбрали программу?
[Не набрасывать результат 'malloc' в C] (http://stackoverflow.com/q/605845/995714) –
Похоже на номера Windows. & x - адрес в стеке, y - адрес в куче. Расположение стека потока и кучи в процессе x64 рандомизируются с помощью/DYNAMICBASE и/HIGHENTROPYVA, что затрудняет атаку вашей программы. –
Спасибо за подсказку @ LưuVĩnhPhúc –