MCPcopy Create free account
hub / github.com/dobin/RedEdr / Catch_NtOpenThread

Function Catch_NtOpenThread

RedEdrDll/dllmain.cpp:887–912  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

885 );
886pNtOpenThread Real_NtOpenThread = NULL;
887NTSTATUS NTAPI Catch_NtOpenThread(
888 OUT PHANDLE ThreadHandle,
889 IN ACCESS_MASK DesiredAccess,
890 IN POBJECT_ATTRIBUTES ObjectAttributes,
891 IN CLIENT_ID* ClientId
892) {
893 int64_t time = get_time();
894 char buf[DATA_BUFFER_SIZE] = "";
895 if (HooksInitialized) { // dont log our own hooking
896 int offset = 0;
897 offset += sprintf_s(buf + offset, DATA_BUFFER_SIZE - offset, "{");
898 offset += sprintf_s(buf + offset, DATA_BUFFER_SIZE - offset, "\"type\":\"dll\",");
899 offset += sprintf_s(buf + offset, DATA_BUFFER_SIZE - offset, "\"time\":%llu,", time);
900 offset += sprintf_s(buf + offset, DATA_BUFFER_SIZE - offset, "\"pid\":%lu,", (DWORD)GetCurrentProcessId());
901 offset += sprintf_s(buf + offset, DATA_BUFFER_SIZE - offset, "\"tid\":%lu,", (DWORD)GetCurrentThreadId());
902 offset += sprintf_s(buf + offset, DATA_BUFFER_SIZE - offset, "\"func\":\"NtOpenThread\",");
903 offset += sprintf_s(buf + offset, DATA_BUFFER_SIZE - offset, "\"thread_handle\":%lld,", ThreadHandle);
904 offset += sprintf_s(buf + offset, DATA_BUFFER_SIZE - offset, "\"access_mask\":%lu,", DesiredAccess);
905 offset += sprintf_s(buf + offset, DATA_BUFFER_SIZE - offset, "\"client_id_process\":%llu,", ClientId->UniqueProcess);
906 offset += sprintf_s(buf + offset, DATA_BUFFER_SIZE - offset, "\"client_id_thread\":%llu,", ClientId->UniqueThread);
907 offset += LogMyStackTrace(&buf[offset], DATA_BUFFER_SIZE - offset);
908 offset += sprintf_s(buf + offset, DATA_BUFFER_SIZE - offset, "}");
909 SendDllPipe(buf);
910 }
911 return Real_NtOpenThread(ThreadHandle, DesiredAccess, ObjectAttributes, ClientId);
912}
913
914
915/******************* NtCreateSection ************************/

Callers

nothing calls this directly

Calls 3

get_timeFunction · 0.85
LogMyStackTraceFunction · 0.85
SendDllPipeFunction · 0.85

Tested by

no test coverage detected