일부 운영 체제에서는 스택과 힙이 있습니다. 서로가 커집니다. 겹치는 부분을 확인하려면 경계 밴드가 있어야합니다. 누구든지 내게 그것에 대해 설명해 줄 수 있습니까? 스택 오버 플로우 오류를 검사하기위한 자체 함수를 작성하려고합니다.스택 오버플로 방법
답변
이와 같은 시스템에서는 일반적으로 힙 상단에 보호 단어 나 유사한 문자가 표시됩니다 (예 : 0xa55a
또는 0xdeadbeef
).
그런 다음 정기적으로 해당 보호 단어가 손상되었는지 확인합니다. 그렇다면 뭔가가 메모리를 덮어 씁니다.
이제 은 스택 오버플로가 될 수 있으며, 불량 메모리 쓰기 일 수 있습니다. 그러나이 두 가지 경우 모두 무언가가 심각하게 잘못되어 동일하게 취급 될 수 있습니다.
물론 최신 운영 체제는 Intel 칩과 같은 하드웨어 지원을 사용하는 방식을 취할 수 있습니다. 이 경우 스택 세그먼트를 특정 크기로 설정할 수 있으며 스택 선택기를 사용하여 외부에 쓰려고하면 트랩을 발생시킵니다.
이 경우 힙은 분리되어 유지되도록 다른 선택기를 사용합니다.
많은 운영 체제는 이러한 공격 경로로부터 보호하기 위해 스택과 힙 사이에 보호 페이지 (또는 유사한 기술)를 배치합니다. 카나리아 (paxdiablo에서 언급 한 방법)를 아직 보지 못했지만, 스택 내부 오버 플로우 (일명 반송 주소를 지키기 위해)를 막기 위해 주로 사용됩니다. Windows에서
가드 페이지 : http://msdn.microsoft.com/en-us/library/aa366549(VS.85).aspx 리눅스 흥미로운가 비록 몇 시간 전에이 문제를 기반으로 악용했다
: 단어를 보호 우리가 알 수있는 방법 http://www.h-online.com/open/news/item/Root-privileges-through-Linux-kernel-bug-Update-1061563.html
- 1. 스택 오버플로
- 2. 스왑 중 스택 오버플로
- 3. 스택 오버플로 메모리
- 4. 프로그램의 스택 오버플로 문제
- 5. 스택 오버플로 란 무엇입니까?
- 6. Fortran 프로그램의 스택 오버플로
- 7. 스택 오버플로/메모리 부족
- 8. 플래시 스택 오버플로 디버깅
- 9. C에서 포인터로 스택 오버플로
- 10. Eclipse - 스택 오버플로 오류
- 11. 스택 오버플로 오류 android?
- 12. 꼬리 재귀 스택 오버플로
- 13. 스택 오버플로 오류 JQuery와
- 14. XMLListCollection의 스택 오버플로 collectionEvent
- 15. 오버로드시 오버플로 스택 오버플로 << 연산자
- 16. haskell에서 "스택 공간 오버플로"를 해결하는 방법
- 17. 스택 오버플로를 늘린 후 스택 오버플로
- 18. QuickSort 및 스택 오버플로 예외
- 19. 스택 오버플로 읽기 RSS 피드
- 20. C# 스택 오버플로 예외가 발생했습니다.
- 21. 프로그래밍 방식으로 스택 오버플로 인증
- 22. 일반 자바 스크립트에서 스택 오버플로
- 23. Internet Explorer의 "스택 오버플로 0"
- 24. 스택 오버플로 및 재귀 메서드
- 25. iphone의 presentModelViewController에 의한 스택 오버플로
- 26. 많은 LINQ 스택 오버플로 선택
- 27. Eclipse JSP 편집기에서 스택 오버플로
- 28. 디버깅은 종종 스택 오버플로 오류
- 29. Silverlight 소켓 연결에 대한 스택 오버플로 방지
- 30. iOS Safari에서 Google지도 API 스택 오버플로 디버그
@pax 사용 ... –
일반적으로 컴파일러 않습니다. 정적 값이거나 컴파일시 임의 생성 된 무언가이거나 각 호출에 대해 계산 된 무언가 일 수 있습니다. 완전히 구현 관련. –
OS (또는 C 라이브러리 또는 무엇이든)는 OS (또는 C 라이브러리 등)가 거기에 넣기 때문에 무엇인지 알 수 있습니다. – paxdiablo