From dcb482ab8ebd24c739557d87afc00eba5f8c52ab Mon Sep 17 00:00:00 2001 From: mkrsym1 Date: Fri, 4 Aug 2023 00:28:53 +0300 Subject: [PATCH] Change pe_find_section interface --- game_payload/blob/core.o | Bin 8019 -> 8050 bytes game_payload/include/pe.h | 7 ++++++- game_payload/src/pe.c | 7 +++---- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/game_payload/blob/core.o b/game_payload/blob/core.o index 65bf6216deb2a23ca584f7b8b9ac4cb8a8d3c497..84dbad4efb246574613d89926028a2af115e3c73 100644 GIT binary patch delta 1861 zcmZXUZ)_7~9LMiz?_9TaUdOgj;*@PI8FLCPGTCr$EneAm+_2Lj1|*Qsbp|pZ;37m_ z_lJV#(ZuBe#3+dh@s+;n3pOLMdoji|#v*@0LIHMf5bKILlMGK2PJjdO)a$F{#d9G@xZYOzW=<{kJWaBtx z=tr0E8Q{yIyDlM`dQ#{;>o)+Nbc=m?v z{D4eS`VB>^V*#`mjY~vaEa4&A2B#92+#yAs4w5+*P}UT8NRA(M_hFiU*n?KznGJ=R zzU;7e)O`X2vMRYfL3LEt1oSZ5my`8+N@d6;zgOt$ z6l1>;Y^A?9@2#z3>_V3F!@I@U7`-Gct;GT^BXaQUDQ(#|x4+Pq9e{Gz|@vvJ_Z=Un>Hu20gNo%po`9H{m zqXNs8w$UE&CjBEi4oyZP)C{7vvL3k*j5n5ge~w71pT`Z4kNfW!0}-{uy&k8n5FBEA zMssLBKB%S?5}m=+0x2%f1ZqYlwbc?-%kzvh4m9FO6`YGl(%2E?vd>Nm2HDP?fULE7 zbO&2mdiK6?)Bg`W{ne~Vef&^G)5?O9Xo&T{L+fSq6WUdbuAr@FG>NvIQ9fR!b&Q?{ zDU5nRZH)c~Wux4EKvBGBW>gI;1Z2*NjwC?9|VjE;lWf+~6LB(R0a-$5OW^6;nKz-S>2 z7M?1MfUzZ%E=ug5u#dVk@sWMRLQ=F{Y!;T|hN{Fdal55t1^#LC1)E1{q0_}JWE1r- zaFHFfbAc;*;K7^!ukIE?w>cA4wKpah&htDR#KZUwD)xGJ&?$hZ?^mg`zD!H delta 1828 zcmZXVe@q)?7{}i$y-|MU3WSa67+{aEWs%SfGGGWTEAk@O4K@)KrzC^U%q?t=#Vj)x z2Aw5XN}DkC_z}1$+#7rlE(Uj!e+yawo#MYG6-!rmj{Wh+hSaEy5US5n*6fIx`_)*H zIYD`iTN>-;o%X`uezm~JN$5B<)n{>BoF0lQp~Hq@^w&Bxb}UzUGk}04({SSSJ@(^N znlz><%M+Kga&uDh2h533)|RV<2h?7$rvI&l%hroUY1pSWYivjypzL(JdKPC;-KTmQ z^-;=XM8td1gHhAtrmrw2waUMg{z0*uyY7jAlJ6sgHK$`Or;~=Y%xtal?yGmGe${)C zI0BeuU9^);mR&Sjh^V%KCS5x(@ zA)TgNqy3|@cwAoAmR|3UdM_C$9o0uQeF1AdFCyuNKm2+Q;UBJA9efcrrqUwSTNap; zdF+k)_XvGq&tkx*r`B(r^yzgrs;^7-SI#TPt5HaeVJnm^=gu_M<6~xN@X*=mL{Sjq z;V;*OvK^&{QzR9iy>A!~l|4w}?=Ah$k@yL#I&4)PR^_*f~M1)#PUBJN~GnGOrq6|1R`>=zZvC(LYBYL%+ihIW}iZ zgUn{mwZmUHnxq^*LOW^4*eK`##_c>aH9NRN#3LBpg05rSBIp*z3PFEhY!;M@_o_)y z7f2KIGbnNG%nF6@qPB>m1xTV&&?eAML0dpof@*@mtpc9{RSRkXJt1f}s76pHs8-NH zkVnvKAg`c)P@SN+K-&bJ0pTmdwg*A=f<6U3Dd+;I0kprp gB{GuJ9>foFbXknoVqSR293B2OdsE7AQJ&xSA8D?b)c^nh 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) {