Developer knowledge network ยท moderated exchange

UnreliableCode Community

Developer Research, Reverse Engineering & Coding Community

Knowledge indexLive
4Categories
919Threads
2.8KPosts
Guide

Compile-Time MurmurHash3 & FNV-1a String Hashing for Dynamic API Resolution [v2.4 Technical Discussion]

vtable_slayer
Senior Reverser
MEMBER
Rep: 215
Join Date: Mar 2018
Posts: 86
Thanks: 61
1 months ago ยท Jul 16, 2026 10:24 AM
#1

Why static plaintext Win32 API strings ("VirtualAlloc", "CreateRemoteThread") flag static analysis:

Anti-cheat scanners inspect the Import Address Table (IAT) and binary .rdata strings.

Compile-Time Hashing:

CPP
constexpr uint32_t HashString(const char* str, uint32_t val = 0x811c9dc5) {
    return (*str == '\0') ? val : HashString(str + 1, (val ^ (uint32_t)(*str)) * 0x1000193);
}

// Resolving API by 32-bit hash value
FARPROC GetProcAddressByHash(HMODULE hMod, uint32_t targetHash);

Zero plaintext string artifacts exist anywhere in your compiled .exe or .dll!

hook_doctor
Hooking Specialist
MEMBER
Rep: 181
Join Date: Jul 2019
Posts: 21
Thanks: 50
1 months ago ยท Jul 16, 2026 4:45 PM
#2

Compile-time constexpr hashing keeps binary disassembly clean and stripped of sensitive API names.

ptr_arithmetic
C++ Wizard
MEMBER
Rep: 162
Join Date: May 2018
Posts: 73
Thanks: 42
1 months ago ยท Jul 16, 2026 11:49 PM
#3

Essential technique for stealth loaders.