Страницы

Поиск по вопросам

четверг, 2 января 2020 г.

Почему у переменной разные адреса?

#linux #c


Есть программа:

#include 
#include 

int main(int argc, char *argv[]) {
    printf("%s => %p\n", argv[1], getenv(argv[1]));
    return 0;
}


На сколько я понимаю, она должна принимать в качестве аргумента некую 
переменную и возвращать её адрес. Поясните, если не затруднит: почему при определении
адреса одной и той же переменной у неё каждый раз новый адрес?

root@kali:~/Documents/ionet# ./getenv LANG
LANG => 0xbfe16bb8
root@kali:~/Documents/ionet# ./getenv LANG
LANG => 0xbfc06bb8
root@kali:~/Documents/ionet# ./getenv LANG
LANG => 0xbfa21bb8

    


Ответы

Ответ 1



По умолчанию (вероятно в целях безопасности (усложняет жизнь хакерам)) при запуске программы Linux располагает ее по разным (случайным) адресам. Если надо запускать в одних и тех же адресах, можете почитать тут (отличный ответ @zed на эту тему) или сразу попробовать запускать через setarch $(uname -m) -RL bash

Комментариев нет:

Отправить комментарий