Developer knowledge network · moderated exchange

Сообщество UnreliableCode

Сообщество разработчиков, обратного проектирования и кодирования

Guide

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

vtable_slayer
Senior Reverser
MEMBER
Представитель: 215
Дата присоединения: Mar 2018
Сообщения: 86
Спасибо: 61
1 месяцев назад · 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
Представитель: 181
Дата присоединения: Jul 2019
Сообщения: 21
Спасибо: 50
1 месяцев назад · 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
Представитель: 162
Дата присоединения: May 2018
Сообщения: 73
Спасибо: 42
1 месяцев назад · Jul 16, 2026 11:49 PM
#3

Essential technique for stealth loaders.