#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
Комментариев нет:
Отправить комментарий