2011-11-18 1 views
1

다른 프로세스의 가져 오기 테이블을 읽을 수있는 방법이 있습니까?
기능이 ImageNtHeader이라면 내 프로세스에만 적용되고 다른 프로세스에는 적용되지 않으므로 여기서는 도움이되지 않습니다.
전체 파일을 읽고 해당 PE 헤더를 구문 분석 할 수 있지만 파일이 클 경우 많은 시간이 필요하다고 생각합니다.실행중인 프로세스의 가져 오기 테이블 읽기

프로세스의 메모리를 직접 사용하고 파일을 읽지 않는 방법이 있습니까?
그것뿐만 아니라 :)

+3

파일에서 똑같은 정보를 사용할 수있는 경우 다른 프로세스의 메모리에 액세스하려고 할 때 0 점이 있습니다. 95 % 확률로 파일 시스템 캐시에 있으므로 실제로 메모리에서 읽는 것입니다. –

+0

Dll-inject를 사용하여 원격으로 ImageNtHeader를 호출하십시오. 그것은 실제로 파일에 접근하지 않고'IMAGE_NT_HEADERS'를 읽는 것이 가장 좋은 방법입니다. – JosephH

답변

0

은 당신이 관심있는 프로세스 모듈의 메모리 주소를 찾을 수 PSAPI 또는 toolhlp32를 사용합니다. 당신은 당신이 사용할 수있는 일단 큰 것 할 수있는 다른 간단하고 좋은 방법 ReadProcessMemory GET 필요한 정보. 그렇지 않으면 단지 디버거 인 척하고 대상 프로세스에 연결하여 메모리에 대한 전체 액세스 권한을 가지므로 Windows PE 매크로를 사용할 수 있습니다.

+0

괜찮지 만 다른 프로세스를 디버거로 여는 경우 PE 헤더를 읽는 데 사용할 수있는 함수는 무엇입니까? 난 단지 현재 프로세스에 대한 함수를 찾았습니다 ... – Idov

+0

@Idov : 전체 메모리 읽기 권한이있는 경우'ImageNtHeader'를 사용할 수 있습니다. 첨부 된 프로세스에서 검사 할 EXE 또는 DLL의'HMODULE'을 전달하십시오. 에. 메모리 읽기 권한이 없다면'ReadProcessMemory'를 사용할 필요가 있습니다. – Necrolis