실행중인 프로그램이 있다고 가정하고 /proc/[pid]/map을 BSD (또는 /proc/[pid]/maps in Linux)에서 보면 다음과 같은 줄이 보입니다.BSD 또는 Linux에서 프로그램의 기본 스택 설정을 제어하는 방법은 무엇입니까?
0xbfbe0000 0xbfc00000 3 0 0xc74c4198 rwx 1 0 0x3000 COW NNC default - CH 1001
스택입니다. 모든 PC-BSD 프로그램은이 같은 스택 경계 0xbfc00000을 사용합니다. 리눅스에서는 ASLR을 끄면 비슷한 결과가 발생합니다.
일부 프로그램에서는이 설정을 사용하고 싶지만 스택은 elf 프로그램 헤더 나 섹션 헤더에 지정되어 있지 않은 것으로 보입니다.
그래서 같은 설정을 변경하려면 :
- 변화가
- 가 다른 값
에 스택 경계를 설정 스택의 실행 권한을 변경할 수있는 방법이 있나요 개별 프로그램을위한 "스택 설정"? 시스템 전체는 어떨까요? FreeBSD를 들어
일부 프로그램에는 ELF 데이터에 GNU_STACK 부분이 있습니다. 이런 식으로 경계를 설정하는 방법이 있는지 궁금합니다. 그렇지 않으면 ELF 정보가 스택의 모든 메모리 레이아웃을 지정할 수 있다는 것이 이상하게 보입니다. – EdBrown
elf 형식에는 프로그램의 어느 부분을 메모리에로드 할 것인지와 그 위치에 대한 정보가 들어 있습니다. 리소스 제한은 운영 체제에 의해 제어되므로 설정하지 않아도됩니다. 'setrlimit (2)'를 보라. –