2016-07-12 2 views
1

dll에서 특정 함수의 RVA를 가져온 다음 해당 RVA를 dll의 기본로드 주소에 추가하여 원격 프로세스 메모리에서 함수를 찾아야합니다. 그러나 원격 프로세스에서 생성 될 스레드에이 메모리 주소를 버퍼에 전달해야합니다. 그래서 주소의 DWORD 표현으로 이것을 전달해야하는지 궁금합니다. 64 비트 Windows에서 실행 중이므로 DWORD_PTR, DWORD64 등이 필요합니까? 아니면 여전히 나에게 의미가없는 포인터로 전달할 수 있습니까?DWORD에 원격 가상 주소 저장?

답변

1

간단한 조사를 해보십시오. 우리는 spec을 참조 할 것입니다. 선택 헤더의 SizeOfImage 필드를 확인하십시오.

모든 헤더를 포함하여 이미지의 크기 (바이트). Section Alignment의 배수 여야합니다.

실제로 이것은 매핑 된 이미지의 크기이며 PE32 및 PE32 + 형식 모두에 대해 4 바이트 정수입니다. 결과적으로 PE 내부의 모든 상대 주소는 항상 32 비트 정수에 맞습니다. 또한 PE 구조의 RVA 필드의 대부분은 DWORD으로 선언되며, IMO는 좋은 힌트입니다.

위로 가기 : 32 비트 또는 64 비트 시스템에서 DWORD에 RVA를 저장할 수 있습니다.