Executing shellcode using timer.
Eksekusi shellcode dengan CreateWaitableTimer dan SetWaitableTimer.
Waitable timer adalah objek synchronization yang akan memberikan signal ketika tenggat waktu terpenuhi dan mengeksekusi sebuah callback.
Callback merupakan sebuah APC (Asynchronous Procedure Call) dan dieksekusi oleh thread yang memanggil SetWaitableTimer. Thread haruslah dalam kondisi alertable untuk dapat memanggil callback, salah satunya dapat menggunakan SleepEx.
HANDLE CreateWaitableTimerW(LPSECURITY_ATTRIBUTES lpTimerAttributes, BOOL bManualReset, LPCWSTR lpTimerName);
BOOL SetWaitableTimer(HANDLE hTimer, const LARGE_INTEGER *lpDueTime, LONG lPeriod, PTIMERAPCROUTINE pfnCompletionRoutine, LPVOID lpArgToCompletionRoutine, BOOL fResume);
DWORD SleepEx(DWORD dwMilliseconds, BOOL bAlertable);
DWORD WaitForSingleObject (HANDLE hHandle, DWORD dwMilliseconds);