Linux에서 프로세스의 코드 세그먼트 위치는 어디에 있습니까?

Linux에서 프로세스의 코드 세그먼트 위치는 어디에 있습니까?

프로세스가 종료되면 스택과 힙을 복원하고 싶습니다. 따라서 바이너리가 동일하게 유지된다면 함수가 실행될 때마다 함수의 주소가 동일하게 유지되는지 확인해야 합니다.

누구든지 도와줄 수 있나요?

답변1

주소 공간 레이아웃 무작위화가 활성화된 경우(대부분의 최신 Linux 시스템의 경우) 함수 주소는 바이너리가 로드될 때마다 동일하게 유지되지 않습니다. 다양한 레이아웃 무작위화가 적용되며, 바이너리가 위치 독립적인 경우 모두 적용할 수 있습니다. 특히 라이브러리 ASLR은 라이브러리가 매번 다른 위치에 로드되는 것을 의미하는 반면 ASLR을 수행하는 것은 위치 독립적임을 의미합니다. 매번 다른 위치에 로드됩니다.

우분투 위키다양한 가능성에 대한 좋은 요약이 있습니다. 우분투에만 해당되는 것은 아닙니다.

설정을 변경하여 이러한 모든 기능을 비활성화할 수 있습니다(권장하지 않음) /proc/sys/kernel/randomize_va_space. 0은 ASLR을 비활성화합니다.

관련 정보