HOOKDEF(HANDLE, WINAPI, CreateRemoteThread, __in HANDLE hProcess, __in LPSECURITY_ATTRIBUTES lpThreadAttributes, __in SIZE_T dwStackSize, __in LPTHREAD_START_ROUTINE lpStartAddress, __in LPVOID lpParameter, __in DWORD dwCreationFlags, __out LPDWORD lpThreadId ) { notify_pipe(GetPidFromProcessHandle(hProcess)); HANDLE ret = Old_CreateRemoteThread(hProcess, lpThreadAttributes, dwStackSize, lpStartAddress, lpParameter, dwCreationFlags, lpThreadId); LOQ("3plL", "ProcessHandle", hProcess, "StartRoutine", lpStartAddress, "Parameter", lpParameter, "CreationFlags", dwCreationFlags, "ThreadId", lpThreadId); return ret; }
HOOKDEF(HANDLE, WINAPI, CreateRemoteThread, __in HANDLE hProcess, __in LPSECURITY_ATTRIBUTES lpThreadAttributes, __in SIZE_T dwStackSize, __in LPTHREAD_START_ROUTINE lpStartAddress, __in LPVOID lpParameter, __in DWORD dwCreationFlags, __out LPDWORD lpThreadId ) { IS_SUCCESS_HANDLE(); pipe("PROCESS:%d", pid_from_process_handle(hProcess)); HANDLE ret = Old_CreateRemoteThread(hProcess, lpThreadAttributes, dwStackSize, lpStartAddress, lpParameter, dwCreationFlags, lpThreadId); LOQ("3plL", "ProcessHandle", hProcess, "StartRoutine", lpStartAddress, "Parameter", lpParameter, "CreationFlags", dwCreationFlags, "ThreadId", lpThreadId); if(NT_SUCCESS(ret)) { disable_sleep_skip(); } return ret; }