MCPcopy Create free account
hub / github.com/changeofpace/Self-Remapping-Code / FillPEHeader

Function FillPEHeader

Self-Remapping Code/pe_header.cpp:6–20  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4// ctors
5
6bool FillPEHeader(ULONG_PTR BaseAddress, OUT PE_HEADER& PEHeader)
7{
8 if (!IsValidPEHeader(BaseAddress))
9 return false;
10 PEHeader.dosHeader = PIMAGE_DOS_HEADER(BaseAddress);
11 PEHeader.ntHeaders = PIMAGE_NT_HEADERS(ULONG_PTR(PEHeader.dosHeader) + PEHeader.dosHeader->e_lfanew);
12 PEHeader.fileHeader = PIMAGE_FILE_HEADER(&PEHeader.ntHeaders->FileHeader);
13 PEHeader.optionalHeader = PIMAGE_OPTIONAL_HEADER(&PEHeader.ntHeaders->OptionalHeader);
14 for (int i = 0; i < IMAGE_NUMBEROF_DIRECTORY_ENTRIES; i++)
15 PEHeader.dataDirectory[i] = &PEHeader.ntHeaders->OptionalHeader.DataDirectory[i];
16 const ULONG_PTR firstSectionHeader = ULONG_PTR(IMAGE_FIRST_SECTION(PEHeader.ntHeaders));
17 for (int i = 0; i < PEHeader.fileHeader->NumberOfSections; i++)
18 PEHeader.sectionHeaders.push_back(PIMAGE_SECTION_HEADER(i * sizeof(IMAGE_SECTION_HEADER) + firstSectionHeader));
19 return true;
20}
21
22bool FillRemotePEHeader(HANDLE ProcessHandle, ULONG_PTR BaseAddress, OUT REMOTE_PE_HEADER& PEHeader)
23{

Callers 4

FillRemotePEHeaderFunction · 0.85
RemapSelfImageMethod · 0.85
ValidateSectionAlignmentFunction · 0.85
TestVirtualProtectFunction · 0.85

Calls 1

IsValidPEHeaderFunction · 0.85

Tested by 1

TestVirtualProtectFunction · 0.68