2017-12-01 5 views
0

프로세스 메모리를 덤프하고 코드 페이지, 가드 페이지, 스택 및 힙과 같은 다른 부분을 구별하려고합니다. 프로세스 메모리를 호출하여 프로세스 메모리를 덤프 할 수 있으며이 시스템 호출에서 memmove를 사용하여 프로세스 메모리를 버퍼로 덤프합니다. 그런 다음 내 사용자 수준 기능에서 버퍼를 인쇄하십시오. 그러나 나는이 기억의 다른 부분을 이해할 수 없다. 이제 나의 배아 아이디어는 이러한 부분의 경계를 가리키는 특수 포인터를 찾는 것입니다. 그러나 나는 포인터가 이것을 할 수 있는지 혼란 스럽다. 아니면이 부분의 크기를 계산하고 인쇄해야합니다 (다음 부분은 코드/가드 페이지입니다)? 가드 페이지 테이블에 4k 페이지 테이블이 있는지 확인할 수 있지만 코드 페이지 나 스택과 같은 다른 파트의 크기를 얻는 방법을 모르겠습니다.프로세스 메모리의 다른 부분을 어떻게 구별 할 수 있습니까?

또한 내 사용자 수준 함수가 매개 변수로 PID를 제공하여 다른 프로세스의 메모리를 덤프 할 수있게하려는 경우에도 시작하는 방법이 혼란 스럽습니다. 다른 프로세스의 페이지 테이블을 찾고 커널 레벨 덤프 기능에 입력하려면 어떻게합니까?

+1

엘프 형식을 찾으십시오. – Stargateur

+0

나는 비슷한 것을 달성하려고 노력하고있다. memmove를 사용하여 프로세스 메모리를 버퍼에 덤프하는 방법에 대해 자세히 설명 할 수 있습니까? walkpgdir을 사용해야합니까? 단계를 나열하거나 코드의 해당 부분을 붙여주십시오. –

답변

0

문제는 메모리가 메모리라는 것입니다. 프로세스는 다중 힙과 다중 스택을 가질 수 있습니다. 그들은 단지 기억처럼 보입니다.

일부 시스템에서는 실행 파일을 검사하여 응용 프로그램이 메모리에서 어떻게 구성되어 있는지 찾을 수 있습니다. 그러나 최신로드에서는 메모리에있는 프로세스의로드를 무작위로 지정합니다.

관련 문제