diff --git a/game_payload/blob/core.o b/game_payload/blob/core.o index 65bf621..84dbad4 100644 Binary files a/game_payload/blob/core.o and b/game_payload/blob/core.o differ diff --git a/game_payload/include/pe.h b/game_payload/include/pe.h index f1843f6..f24195f 100644 --- a/game_payload/include/pe.h +++ b/game_payload/include/pe.h @@ -2,5 +2,10 @@ #include -void pe_find_section(HMODULE module, const char *section, MEMORY_BASIC_INFORMATION *buf); +struct pe_section_info { + void *base_address; + size_t initialized_size; +}; + +void pe_find_section(HMODULE module, const char *section, struct pe_section_info *buf); void *pe_find_entry_point(HMODULE module); diff --git a/game_payload/src/pe.c b/game_payload/src/pe.c index 86f3e43..9d0ba23 100644 --- a/game_payload/src/pe.c +++ b/game_payload/src/pe.c @@ -1,6 +1,6 @@ #include -void pe_find_section(HMODULE module, const char *section, MEMORY_BASIC_INFORMATION *buf) { +void pe_find_section(HMODULE module, const char *section, struct pe_section_info *buf) { char *cModule = (char*)module; IMAGE_DOS_HEADER* dosHeader = (IMAGE_DOS_HEADER*)module; @@ -9,17 +9,16 @@ void pe_find_section(HMODULE module, const char *section, MEMORY_BASIC_INFORMATI WORD sectionCount = ntHeaders->FileHeader.NumberOfSections; IMAGE_SECTION_HEADER* sectionHeader = (IMAGE_SECTION_HEADER*)(ntHeaders + 1); - void* targetAddress = 0x0; for (WORD i = 0; i < sectionCount; i++) { if (strncmp((char*)sectionHeader->Name, section, 8) == 0) { - targetAddress = (void*)(cModule + sectionHeader->VirtualAddress); break; } sectionHeader++; } - VirtualQuery(targetAddress, buf, sizeof(MEMORY_BASIC_INFORMATION)); + buf->base_address = cModule + sectionHeader->VirtualAddress; + buf->initialized_size = sectionHeader->SizeOfRawData; } void *pe_find_entry_point(HMODULE module) {