This project demonstrates a Windows technique for decoding and executing a payload from an array of UUID strings. The payload is stored as UUIDs, converted back into raw shellcode at runtime, and executed through a callback function pointer.
-
Payload Encoding
- The shellcode is represented as an array of UUID strings (
uuids
inpayload.h
).
- The shellcode is represented as an array of UUID strings (
-
Heap Allocation
- A RWX (read-write-execute) heap is created with
HeapCreate
andHeapAlloc
.
- A RWX (read-write-execute) heap is created with
-
UUID Decoding
- Each UUID string is converted back into 16 bytes of binary data using
UuidFromStringA
. - The decoded payload is written sequentially into the allocated heap.
- Each UUID string is converted back into 16 bytes of binary data using
-
Execution
- The payload is executed indirectly by passing its address as a callback to
EnumSystemLocalesA
.
- The payload is executed indirectly by passing its address as a callback to