RAM 메모리의 내용을 볼 수있는 방법이 있습니까? 첫 바이트부터 마지막 바이트까지. OS와 OS에서 실행되는 모든 프로세스가 RAM에서 어디에 있는지 알고 싶습니다. 이게 가능해?
RAM 메모리의 내용을 볼 수있는 방법이 있습니까? 첫 바이트부터 마지막 바이트까지. OS와 OS에서 실행되는 모든 프로세스가 RAM에서 어디에 있는지 알고 싶습니다. 이게 가능해?
답변:
커널 디버거를 사용하면 Windows 용 SoftICE 와 같은 "원시"메모리 액세스가 가능합니다 . Linux 커널 의 디버거 로 작동하도록 GDB를 구성 할 수도 있습니다 . 가상 머신이 옵션 인 경우 일부 가상화 소프트웨어는 머신 상태 (RAM 포함)를 디스크에 저장하는 기능을 지원하며,이를 통해 추가 분석 할 수 있습니다 . 그러나 대부분의 "현대"운영 체제는 ASLR ( Address Space Layout Randomization)을 사용합니다. 시스템의 실제 물리적 메모리 맵은 다양한 보안 문제 및 악용 (예 : 스택 / 힙 버퍼 오버플로)을 완화하기 위해 의도적으로 조각화됩니다 .
그러나 최신 운영 체제에서 실행중인 특정 프로그램의 경우 적절한 디버깅 기호 및 디버거가있는 한 지정된 프로세스 / 스레드에 대한 논리 메모리 맵을 얻을 수 있습니다. 전체적인 관점을 원한다면 소프트웨어 / 하드웨어가 가상 메모리 를 사용하는 경우 상황이 훨씬 더 복잡해집니다. 말 그대로 무엇을 원하는 경우 다시하지만, 단지 램에, 첫 번째 단락을 참조하십시오.
Windows에서 실제 메모리의 내용은 오브젝트 관리자 의 \Device\PhysicalMemory
오브젝트를 통해 액세스 할 수 있습니다 . 이를 위해서는 시스템에 대한 커널 수준의 액세스가 필요합니다. 즉,이 개체에 액세스하려면 프로그램 (대개 커널 모드 드라이버)을 설치해야합니다.
Linux에서 실제 메모리의 내용은로 읽음 /dev/mem
으로써 이진 데이터로 직접 액세스 할 수 있습니다 root
. / dev / mem 은 무엇입니까?를 참조하십시오 . mem(4)
자세한 내용 은 매뉴얼 페이지를 참조하십시오.
그래도 운영 체제와 프로세스가 실제 메모리에서 어디에 있는지 결정해야하는 이유를 모르겠습니다.
\DevicePhysicalMemory
사용자 모드에서 개체를 열 수 없습니다. RAMmap과 대부분의 다른 sysinternals 툴에는 커널 모드 드라이버가 포함되어있어 작업의 일부를 수행합니다.