2012-12-26 2 views
3

다른 프로세스에서 메모리에로드 한 C# grab 파일에서 가능합니까? 예를 들어 이미지 파일 또는 txt 파일. 해당 파일 중 일부를 메모리에로드하는 응용 프로그램이 있습니다. 나는 디스크에 그것을 덤프해야합니다. 나는 어려운 길로 생각하고 올바른 방식으로 나를 넣을 수 있습니다.메모리 프로세스에서 파일을 가져 오기

+2

제목을 편집했습니다. "[제목에"태그 "가 포함되어 있어야합니까?] (http://meta.stackexchange.com/questions/19190/)"합의가 "아니오, 그렇지 않아야합니다"로 표시되어야합니다. –

+0

['ReadProcessMemory'] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms680553%28v=vs.85%29.aspx)를 찾으십니까? (당신은 그것을 액세스하기 위해'pinvoke '해야 할 것입니다.) (* edit * http://stackoverflow.com/questions/9966515/c-sharp-readprocessmemory-accessing-reading-pointers도 참조하십시오) –

+0

그런 식으십시오 귀하의 질문은 어떤 상황에서도 완전히 벗어났습니다. 왜 그렇게해야하는지에 대한 자세한 정보를 제공해주십시오. 또한 다른 프로세스가 관리되는 프로세스인지 여부, 시스템에서 관리자 권한이 있는지 여부에 상관없이이 프로세스에서 메모리에 파일을로드하는 방법을 설명합니다. –

답변

1

이것은 기술적으로 불가능하지 않습니다. 충분한 권한이 있다고 가정하면 ReadProcessMemory() winapi 함수를 사용하여 다른 프로세스의 메모리를 들여다 볼 수 있습니다. Pinvoke가 필요합니다.

그러나 문제는 당신이 건초 더미에서 바늘을 찾으려고한다는 것을 알게 될 것입니다. 프로세스에 대해을 알지 못한다면 어떤 가상 메모리가 읽기 시작하는지 알 수 없습니다. 20 억 가지의 멋진 선택으로 시작할 수 있습니다. 아마 백만 분의 1 정도로 줄일 수 있습니다. 무작위로 물건을 움직이는 가비지 컬렉터와 같은 복잡함을 던져라.

SysInternals의 VMMap 유틸리티를 사용하면 다른 프로세스의 가상 메모리가 어떤 모양인지 알 수 있습니다.

+0

vmmap은 메모리 만 표시하고 데이터를 추출 할 수 없습니다. – devilkkw

+0

예, 수백만 바이트가 어떻게 구성되는지에 대한 통찰력을 얻는 도구입니다. –

+0

나는 약간의 의견을 읽었습니다. 이해했다면 올바른 기본 주소와 오프셋을 알아야합니다. 그러면 읽고 크기를 알아야합니다. 그렇지 않습니까? – devilkkw

관련 문제