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 (
uuidsinpayload.h).
- The shellcode is represented as an array of UUID strings (
-
Heap Allocation
- A RWX (read-write-execute) heap is created with
HeapCreateandHeapAlloc.
- 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