얼마 전 C#에서 프로세스의 메모리를 읽고 특정 값 (예 : 정수 42의 모든 위치의 위치)을 찾는 메모리 스캐너를 만들었습니다. 그 이후로이 프로젝트를 다시 방문하여 64 비트 시스템에서 작동하도록 설계하려고합니다. 필자는 64 비트 프로세스에 최대 8TB의 가상 메모리 (32 비트 시스템의 겸손한 2 ~ 4GB에 비해)가 부여된다는 문제에 직면 해 있습니다. 필자의 코드에서 알맞은 시간 내에 0-8TB 범위의 모든 주소를 스캔하는 것은 불가능합니다.64 비트 스캔 메모리?
Process.MainModule.BaseAddress에서 스캔을 시작하려했지만 읽기를 중단해야하는 위치를 알지 못하고 중요한 값이 누락되었습니다. 프로세스를 실제로 사용하는 범위를 스캔 할 수 있도록 필드를 어떻게 제한합니까?
프로세스의 메모리 맵을 얻어야합니다. "프로세스 메모리 맵"을 검색하면 시작할 수 있습니다. –
프로세스 메모리 맵 및 유사한 용어를 검색했지만 페이징 및 가상 메모리 작동 방식에 대한 설명 만 찾을 수있었습니다. 유용한 정보 였지만 실제로 어떻게 생성을 달성하는지 또는 외부 프로세스의 메모리 맵을 보는 방법을 정확하게 지적하지는 못했습니다. 그러나 이로 인해 프로세스 가상 메모리를 탐색하는 다른 방법을 검토하게되었습니다. – user1881066
'VirtualQueryEx'를 호출하는 주소 공간을 통한 스캐닝은 프로세스 메모리 맵을 생성하는 방법입니다. –