Protect Contains code encryption, can be used standalone ProtectClient Client side of network protection ProtectServer Server side of network protection
PROTECT_START_FUNC(Decrypt) .... ..... return; PROTECT_END_FUNC
void function() { ......code ......... OBFUSCATE_START_FUNC; ........ .. secret stuff ........ OBFUSCATE_END_FUNC; ........ more code....... }
code OBFUSCATE_START_FUNC secret <NO RETURNS HERE !!!> OBFUSCATE_END_FUNC code return
code OBFUSCATE_START_FUNC secret return <--- WRONG! OBFUSCATE_END_FUNC code return
bool res = VirtualProtect(start, size, access ? PAGE_EXECUTE_READWRITE : PAGE_EXECUTE_READ, &oldProt);
bool PROTECT_WRITE_ACCESS(byte *start, size_t size, bool access) { dword oldProt; bool res = VirtualProtect(start, size, access ? PAGE_EXECUTE_READWRITE : PAGE_EXECUTE_READ, &oldProt); if (!res) { Exclamation(::Format("VirtualProtect fail %d (size=%d, access=%d)",(int)GetLastError(), (int)size, (int)access)); } return res; }
PROTECT_OBFUSCATE(__startPtr, __endPtr - __startPtr + 2, __keyPtr, 16); \
PROTECT_OBFUSCATE(__startPtr, __endPtr - (__startPtr + 2), __keyPtr, 16); \
warning C4102: '__end' : unreferenced label