While digging into the ReadDirectoryChanges API, I noticed it supports an asynchronous callback via LPOVERLAPPED_COMPLETION_ROUTINE. Most people use this API to monitor file system changes, but what if we could hijack that callback to execute shellcode? This led me to develop a proof-of-concept (PoC) that turns a mundane filesystem monitoring function into a stealthy shellcode execution vector.
The API is documented as follows by Microsoft.
| 1 2 3 4 5 6 7 8 9 10 | BOOL ReadDirectoryChangesW(   [in]                HANDLE                          hDirectory,   [out]               LPVOID                          lpBuffer,   [in]                DWORD                           nBufferLength,   [in]                BOOL                            bWatchSubtree,   [in]                DWORD                           dwNotifyFilter,   [out, optional]     LPDWORD                         lpBytesReturned,   [in, out, optional] LPOVERLAPPED                    lpOverlapped,   [in, optional]      LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine ); | 
