누군가 하드웨어에서 제공하지 않는 32 비트 x86과 같은 플랫폼에서 NX 비트를 에뮬레이트 할 수있는 방법을 설명 할 수 있습니까? 나는 어떻게 그것이 실현 될 수 있었는지 상상할 수 없기 때문에 그것이 모방되는 방식의 기본에 대한 설명을하기에 좋을 것입니다. 미리 감사드립니다.NX 비트 에뮬레이션
3
A
답변
3
Exec Shield, PaX PAGEEXEC 및 PaX SEGMEXEC에 대해 읽어보세요.
0
필자는 결코 NX 에뮬레이션을 구현하지 못했지만 x86에 대한 정보를 알고있는 것이 그것이 작동하는 방법에 대한 최선의 추측입니다.
커널이 코드를 포함 할 수있는 주소 범위를 정의하는 방법은 모두 global descriptor table입니다.
32 비트 보호 모드의 x86에서는 16 비트 코드의 오래된 "세그먼트 레지스터"가 여전히 의미가 있습니다. 세그먼트 레지스터는 GDT에서 어떤 항목이 사용되는지를 결정합니다. GDT 항목은 본질적으로 메모리 범위입니다. 커널이 주소 범위가 [x, y] 인 GDT 항목에서 cs
(코드 세그먼트) 레지스터를 가리키는 경우 해당 범위를 벗어난 주소는 실행 불가능합니다.
NX 비트가 page table 항목에 들어가기 때문에 이것은 NX 비트보다 훨씬 더 거칠다는 것에 유의하십시오. 따라서 NX 비트를 사용하면 임의의 페이지를 비 실행 가능으로 표시 할 수 있습니다. 반면 cs
세그먼트를 사용하면 세그먼트를 실행 불가능한 것으로 지정할 수 있습니다.
관련 문제
- 1. 6502 CPU 에뮬레이션
- 2. 에뮬레이션 a 386
- 3. 코코아에서 Cmd + ~ 에뮬레이션
- 4. JTextPane 키 누르기 에뮬레이션
- 5. 에뮬레이션 ASP.NET 인증 쿠키
- 6. IE 8 에뮬레이션 (Mac)
- 7. Datastore에서 "OR"조건 에뮬레이션
- 8. 에뮬레이션 ".contains()"보고 서비스
- 9. jmeter의 브라우저 캐시 에뮬레이션?
- 10. .NET의 사운드 장치 에뮬레이션
- 11. 자바 스크립트로 링크 에뮬레이션
- 12. ARM 개발 및 에뮬레이션
- 13. 에뮬레이션 용 자바 스윙
- 14. 플렉스의 터미널 에뮬레이션
- 15. 하드웨어 에뮬레이션 프로젝트
- 16. PN532 카드 에뮬레이션 모드
- 17. py2app ARGV 에뮬레이션 오류
- 18. 하드웨어 에뮬레이션 모드에서 CUDA SDK 예제 컴파일
- 19. C++ : 에뮬레이션 된 고정 소수점 나누기/곱셈
- 20. gcc 버전 4.12와의 is_pointer 에뮬레이션
- 21. custum을 사용하여 테이블 에뮬레이션 NSScrollView
- 22. 에뮬레이션 Google 키보드 바로 가기
- 23. JMockit 최대 절전 모드 에뮬레이션
- 24. VT100 에뮬레이션 C#에서 SharpSSH로
- 25. C 프로그램으로 파일 시스템 에뮬레이션
- 26. 지리적 위치 에뮬레이션? (웹 사이트)
- 27. Android 블루투스 터치 패드 에뮬레이션
- 28. 프레임 세트의 순수 CSS 에뮬레이션
- 29. Excel MAXIF 함수 또는 에뮬레이션?
- 30. Nx N 격자의 이미지를 사용하는 WPF 이미지 생성