동일한 프로그램의 두 인스턴스를 시작한다고 가정합니다. 두 프로그램의 텍스트 영역에 동일한 가상 주소가 있습니까?가상 주소
Q
가상 주소
1
A
답변
0
아마도 그렇지는 않지만 가능할 수도 있습니다. 각 프로세스에는 자체 메모리 공간이 있습니다.
1
에 따라 다릅니다. 대부분의 시스템에서 동일한 환경 (동일한 매개 변수 등)에서 동일한 프로그램을 두 번 실행하면 동일한 주소 매핑을 찾을 수 있습니다. 이것은 프로세스의 대부분이 결정적이며 환경, 명령 행 매개 변수, 읽는 파일의 내용에만 의존하지만 날짜 또는 프로세스 ID와 같은 변경 데이터에는 의존하지 않기 때문입니다. 이는 디버깅 할 때 매우 유용합니다. 프로그램을 다시 시작하면 작은 코드를 변경하고 다시 컴파일 한 후에도 메모리 레이아웃이 동일하게 유지 될 가능성이 있습니다. 물론, 동시에 실행되는 프로그램의 다른 인스턴스는 동일한 가상 주소를 가질 수 있지만 동일한 물리적 주소를 갖지는 않습니다.
OpenBSD 또는 다양한 보안 설정을 가진 Linux와 같은 일부 시스템에서는 address space layout randomization (ASLR)을 구현합니다. ASLR은 프로세스가 시작될 때마다 코드, 데이터, 스택 및 힙의 가상 주소가 무작위로 결정된다는 것을 의미합니다. 이 보안 기능은 보안 취약성을 악용하는 것을 어렵게 만듭니다. 악용 코드는 알려진 주소의 알려진 코드에 액세스 할 수 없습니다. 그러나 ASLR이 대중화되면서 악용은 더욱 정교 해져서 해결됩니다. ASLR은 많은 복잡성을 추가하지 않고 익스플로잇 작성자의 작업 부하를 증가시키기 때문에 유용합니다.
관련 문제
- 1. 커널 가상 주소 변환
- 2. 논리 및 가상 주소
- 3. 86 가상 주소 길이
- 4. 가상 멤버 함수 주소 인쇄
- 5. 실제 주소 및 가상 주소 란 무엇입니까? 어떻게 작동합니까?
- 6. x64 Windows 프로그램에서 스택의 가상 주소 선택
- 7. 리눅스 3/1 가상 주소 분할
- 8. 페이지에 전체 프로세스의 가상 주소 공간 분할
- 9. 함수 포인터 : 실제 또는 가상 주소
- 10. 가상 주소 공간 전체 그림 필요
- 11. 주소 주소
- 12. Windows x64의 44 비트 가상 메모리 주소 한계 뒤
- 13. "라인"아래 또는 라인 위의 가상 주소 0x1FE0C0입니까?
- 14. MAC 주소 (IP 주소 :
- 15. 어셈블리 명령 주소
- 16. 가상 마이크 (가상 마이크)
- 17. 끝점 주소 문제
- 18. 사용자 커널 주소 부분
- 19. 페이지 내부 주소 별도 주소
- 20. 클라이언트의 IP 주소/MAC 주소
- 21. 상대 주소 및 절대 주소
- 22. LINQ 외래 키 관계 명명 (주소, 주소 1, 주소 2)
- 23. 가상 메모리 : 프로세스와 시스템의 하나임
- 24. 가상 PC 램프 서버
- 25. Android에서지도 주소 또는 위치 주소 가져 오기
- 26. 브라우저 주소 표시 줄에 주소 변경없이 리디렉션
- 27. AJAX는 주소
- 28. 메모리 주소
- 29. 잘못된 주소
- 30. 주소 딜레마