2009-10-13 4 views
5

.NET에서 메모리 액세스를 실험하고 있습니다. 현재 비 관리 프로세스를 시작하고로드 된 모듈 (DLL) 중 하나의 BaseAddress을 검색하는 관리되는 프로그램이 있습니다. 내가하고 싶은 것은로드 된 모듈의 PE 헤더를 어떻게 든 읽으므로 나중에 해당 내보내기의 주소를 검색 할 수 있습니다.메모리에로드 된 모듈의 PE 헤더를 읽으려면 어떻게해야합니까?

불행히도, 나는 이것에 대한 좋은 정보를 찾을 수 없습니다. 어떤 아이디어?

답변

5

This은 PE 파일 형식의 좋은 출발점입니다.

기본 주소에서 ReadProcessMemory을 P/Invoke 할 수 있습니다. 헤더를 프로세스에 복사해야합니다. 읽어 온 메모리를 다양한 PE 헤더로 파싱해야합니다. 첫 번째 머리글은 입니다. IMAGE_DOS_HEADER입니다. 그런 다음 IMAGE_NT_HEADERS에있는 IMAGE_OPTIONAL_HEADER을 사용하여 이진 파일에서 IMAGE_EXPORT_DIRECTORY의 위치를 ​​찾을 수 있습니다.

관련 문제