본문 바로가기
카테고리 없음

PE parsing - IMAGE_NT_HEADER

by 코끼리_땃쥐 2023. 4. 8.

IMAGE_NT_HEADER 는 ImageBase로 부터 IMAGE_DOS_HEADER->e_lfanew 만큼 떨어져있습니다.

int main(void)
{
	HMODULE module_base = GetModuleHandle(NULL);
	LPVOID base_addr = (LPVOID)module_base;

	PIMAGE_DOS_HEADER dos_header = (PIMAGE_DOS_HEADER)base_addr;
	PIMAGE_NT_HEADERS nt_header = (PIMAGE_NT_HEADERS)((UINT_PTR)base_addr + dos_header->e_lfanew);
	
	std::cout << std::hex << nt_header->Signature << std::endl;
	return 0;
}

imageBase에 dos_header의 e_lfanew를 더한 주소값이 nt_header의 주소가됩니다.

 

PIMAGE_NT_HEADERS nt_header = (PIMAGE_NT_HEADERS)((UINT_PTR)base_addr + dos_header->e_lfanew)

 

nt_header의 Signature를 출력해보면 45 50 이라는 것을 확인 할수 있습니다.

 

PEview를 켜서 확인 해보면 결과가 같은것을 확인 할 수 있습니다.

댓글