#pragma once /* Bliblioteka threads protection Autor: Regz.pl Przykład: threads_protection::add(CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)test_thread, NULL, 0, 0)); while(true) { if(threads_protection::check()) MessageBox(NULL, "Wykryto modyfikację kodu", "Błąd", MB_OK); Sleep(25); } Test: Uruchom Process Explorer i znajdź proces, wejdź w jego szczegóły i zatrzymaj/zakończ wątek test_thread a funkcja check zwróci prawdę. */ #include <windows.h> #include <vector> namespace threads_protection { std::vector<HANDLE> threads; void add(HANDLE thread) { threads.push_back(thread); } int check() { if (threads.size() > 0) { for (int i = 0; i < (int)threads.size(); i++) { if (WaitForSingleObject(threads[i], 0) != WAIT_TIMEOUT || ResumeThread(threads[i]) == 1) { return 1; } } } return 0; } }