저는 "The Art of Development"를 읽고 있으며 다양한 메모리 주소를 읽고 쓰는 것과 관련된 몇 가지 실험을 시도하고 싶습니다. 나는 몇 가지 간단한 프로그램을 만들고 변수를 덮어쓰기 위해 다양한 트릭을 시도했습니다. 문제는 프로그램을 실행할 때마다 이러한 변수의 주소가 계속 변경되어 이것이 매우 복잡하다는 것입니다.
보안상의 이유인 것은 알지만, 학습 목적으로 비활성화할 수 있는지 알고 싶습니다. 내 시스템과 gcc에 대한 정보는 다음과 같습니다.
blackbear@blackbear-laptop:~$ uname -a
Linux blackbear-laptop 2.6.32-30-generic #59-Ubuntu SMP Tue Mar 1 21:30:21 UTC 2011 i686 GNU/Linux
blackbear@blackbear-laptop:~$ gcc --version
gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
blackbear@blackbear-laptop:~$
답변1
내 기억이 맞다면 proc 파일 시스템을 통해 주소 공간 무작위화를 비활성화하는 것이 가능해야 합니다.
에코 0 > /proc/sys/kernel/randomize_va_space
분명히, 당신은 이것에 기초를 두어야 합니다.
답변2
설정을 일시적으로 변경하는 또 다른 옵션은 sysctl 명령을 사용하는 것입니다.
sysctl -w kernel.randomize_va_space=0
이 설정을 시스템 재부팅 시 영구적이고 효과적으로 적용하려면 이 옵션을 에 추가하세요 /etc/sysctl.conf
. 기본값은 가장 안전한 2여야 합니다.