RAM 메모리의 내용을 보는 방법? [닫은]


14

RAM 메모리의 내용을 볼 수있는 방법이 있습니까? 첫 바이트부터 마지막 ​​바이트까지. OS와 OS에서 실행되는 모든 프로세스가 RAM에서 어디에 있는지 알고 싶습니다. 이게 가능해?


1
보호 된 메모리 환경 에서 사용자 프로세스로서, 사용자 의 가상 메모리 공간 사본에만 액세스 할 수 있습니다. 커널 메모리 공간, 다른 사용자의 가상 메모리 공간 및 사용되지 않는 실제 메모리는 모두 눈에 띄지 않게 보호됩니다. 반면에 물리적 SDRAM의 임의 시간 스냅 샷은 가상 메모리 매핑을 모르는 한 큰 의미가 없습니다.
톱밥

랜덤 액세스 메모리 메모리? 그래서 페이지 할당 테이블?
ta.speot.is는

정확히 무엇을 달성하려고합니까? meta.stackexchange.com/questions/66377/what-is-the-xy-problem
bwDraco

실제로 1과 0을 보는 것보다 메모리가 할당되는 방법을 보여주는 도구를 사용하면 훨씬 더 행복 할 것입니다.
Daniel R은

1
그것은 단지 호기심에서 벗어났다
osta

답변:


8

커널 디버거를 사용하면 Windows 용 SoftICE 와 같은 "원시"메모리 액세스가 가능합니다 . Linux 커널디버거 로 작동하도록 GDB를 구성 할 수도 있습니다 . 가상 머신이 옵션 인 경우 일부 가상화 소프트웨어는 머신 상태 (RAM 포함)를 디스크에 저장하는 기능을 지원하며,이를 통해 추가 분석 할 수 있습니다 . 그러나 대부분의 "현대"운영 체제는 ASLR ( Address Space Layout Randomization)을 사용합니다. 시스템의 실제 물리적 메모리 맵은 다양한 보안 문제 및 악용 (예 : 스택 / 버퍼 오버플로)을 완화하기 위해 의도적으로 조각화됩니다 .

그러나 최신 운영 체제에서 실행중인 특정 프로그램의 경우 적절한 디버깅 기호 및 디버거가있는 한 지정된 프로세스 / 스레드에 대한 논리 메모리 맵을 얻을 수 있습니다. 전체적인 관점을 원한다면 소프트웨어 / 하드웨어가 가상 메모리 를 사용하는 경우 상황이 훨씬 더 복잡해집니다. 말 그대로 무엇을 원하는 경우 다시하지만, 단지 램에, 첫 번째 단락을 참조하십시오.


9

Windows에서 실제 메모리의 내용은 오브젝트 관리자\Device\PhysicalMemory오브젝트를 통해 액세스 할 수 있습니다 . 이를 위해서는 시스템에 대한 커널 수준의 액세스가 필요합니다. 즉,이 개체에 액세스하려면 프로그램 (대개 커널 모드 드라이버)을 설치해야합니다.

Linux에서 실제 메모리의 내용은로 읽음 /dev/mem으로써 이진 데이터로 직접 액세스 할 수 있습니다 root. / dev / mem무엇입니까?를 참조하십시오 . mem(4)자세한 내용 은 매뉴얼 페이지를 참조하십시오.

그래도 운영 체제와 프로세스가 실제 메모리에서 어디에 있는지 결정해야하는 이유를 모르겠습니다.


3
실제로 Windows에서는 RAMMapPhysMem 유틸리티 와 마찬가지로 열 수 있습니다 \Device\PhysicalMemory(와 동일 /dev/kmem) .
user1686

1
더 이상은 아닙니다. Server 2003 이상에서는 모든 \DevicePhysicalMemory사용자 모드에서 개체를 열 수 없습니다. RAMmap과 대부분의 다른 sysinternals 툴에는 커널 모드 드라이버가 포함되어있어 작업의 일부를 수행합니다.
Jamie Hanrahan 5
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.