| 121 | } |
| 122 | |
| 123 | bool IScanner::ScanProcessThreads(HANDLE hProcess) |
| 124 | { |
| 125 | SCANNER_LOG(LL_SYS, "Thread scanner has been started! Target process: %u(%p)", g_winapiApiTable->GetProcessId(hProcess), hProcess); |
| 126 | |
| 127 | if (!IS_VALID_HANDLE(hProcess)) |
| 128 | { |
| 129 | SCANNER_LOG(LL_ERR, "Target handle is NOT valid!"); |
| 130 | return true; |
| 131 | } |
| 132 | |
| 133 | if (!g_nmApp->DynamicWinapiInstance()->IsValidHandle(hProcess)) |
| 134 | { |
| 135 | SCANNER_LOG(LL_ERR, "Target process is NOT active!"); |
| 136 | return true; |
| 137 | } |
| 138 | |
| 139 | auto szProcessName = CProcessFunctions::GetProcessName(hProcess); |
| 140 | if (szProcessName.empty()) |
| 141 | { |
| 142 | SCANNER_LOG(LL_ERR, "Process name read fail! Target process: %p Error: %u", hProcess, g_winapiApiTable->GetLastError()); |
| 143 | return false; |
| 144 | } |
| 145 | SCANNER_LOG(LL_SYS, "Process image name: %s", szProcessName.c_str()); |
| 146 | |
| 147 | return EnumerateThreads(hProcess); |
| 148 | } |
| 149 |
nothing calls this directly
no test coverage detected