Вы должны войти, чтобы создавать сообщения и темы.

Trinity - Управление частотой процессора

1◄Страница 12 из 27► 27

Проверил программу на ВирусТотале, пополнение количества детектов

Разбор от Гемини

Судя по скриншоту с VirusTotal и предоставленному исходному коду, увеличение количества детектов (особенно от таких вендоров, как DrWeb, Rising, Microsoft, CrowdStrike, Skyhigh) абсолютно закономерно.

Антивирусы не знают ваших благих намерений — они анализируют паттерны поведения, используемые API и сигнатуры встроенных файлов. В вашем коде собрано практически бинго из приёмов, которые используют вредоносные программы (трояны, инжекторы и утилиты скрытия).

Ниже подробно разобрано, из-за каких конкретно участков кода сработал каждый антивирус и что с этим делать.


1. Главная причина: Уязвимый драйвер WinRing0 (100% детект)

  • Детекты: DrWeb (Tool.VulnDriver.23), Rising (HackTool.VulnDriver)

  • Где в коде:

    C++
     
    СкопированоHRSRC hRes = FindResourceW(NULL, L"IDR_DRIVER_SYS", RT_RCDATA);
    ...
    swprintf_s(driverPath, L"%sWinRing0x64.sys", tempPath);
    CreateServiceW(..., DRIVER_SERVICE_NAME, ..., driverPath, ...);
    CreateFileW(L"\\\\.\\WinRing0_1_2_0", ...);
  • Почему срабатывает:

    Драйвер WinRing0.sys находится в глобальных черных списках Microsoft (Driver Blocklist) и всех мировых антивирусов. Это классическая техника BYOVD (Bring Your Own Vulnerable Driver), которую вирусы и руткиты используют для обхода защиты ядра Windows (отключения EDR/AV, модификации памяти ядра через уязвимости драйвера). Любой файл, извлекающий и запускающий WinRing0, автоматически получает плашку HackTool / VulnDriver.


2. Внедрение в чужие процессы (Code Injection / Process Tampering)

  • Детекты: CrowdStrike Falcon (Win/malicious_confidence), Elastic (Malicious), Symantec (ML.Attribute)

  • Где в коде: Функции SaveDesktopIconPositions и RestoreDesktopIconPositions:

    C++
     
    СкопированоHANDLE hProcess = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE, FALSE, pid);
    SharedMem* pRemote = (SharedMem*)VirtualAllocEx(hProcess, ...);
    WriteProcessMemory(hProcess, ...);
    ReadProcessMemory(hProcess, ...);
  • Почему срабатывает:

    Вы открываете чужой системный процесс (explorer.exe), выделяете в нём память (VirtualAllocEx) и записываете туда данные (WriteProcessMemory). Для эвристических анализаторов это выглядит точь-в-точь как DLL Injection / Shellcode Injection, типичный троянский функционал.


3. Манипуляции с токенами и правами (Token Stealing / Privilege Escalation)

  • Детекты: Microsoft (Trojan:Win32/Wacatac.B!ml)

  • Где в коде:

    C++
     
    СкопированоEnablePrivilege(SE_DEBUG_NAME);
    EnablePrivilege(SE_IMPERSONATE_NAME);
    ...
    HANDLE GetShellToken() {
        // Поиск Shell_TrayWnd, вызов DuplicateTokenEx
        // WTSQueryUserToken(...)
        CreateProcessWithTokenW(hToken, ...);
    }
  • Почему срабатывает:

    Запрос отладочной привилегии SeDebugPrivilege и воровство/дублирование токена explorer.exe для спавна независимых процессов без повышения — любимый трюк малвари для сброса прав, обхода песочниц и манипуляций с LSASS. Системы машинного обучения (суффикс !ml у Защитника Windows) моментально реагируют на комбинацию этих WinAPI.


4. Скачивание и самозамена исполняемого файла (Dropper / Loader)

  • Детекты: Malwarebytes (RiskWare.Loader), Arctic Wolf (Unsafe)

  • Где в коде: Функции SwitchToEnglishThread и CheckUpdateThread:

    C++
     
    СкопированоDownloadFileDirect(szDownloadUrl, tmpExe);
    MoveFileExW(currentExe, oldExe, MOVEFILE_REPLACE_EXISTING);
    MoveFileExW(tmpExe, currentExe, MOVEFILE_REPLACE_EXISTING);
    ShellExecuteW(NULL, L"open", currentExe, ...);
    ExitProcess(0);
  • Почему срабатывает:

    Программа качает бинарный файл из облака (Яндекс.Диск), заменяет собственный .exe на лету и перезапускает его. Это поведение классического загрузчика (Stager / Loader). Антивирус не может заранее знать, что будет скачано из интернета, поэтому по умолчанию маркирует софт как RiskWare/TrojanDownloader.


5. Поведение, похожее на вымогатель (Ransomware Heuristics)

  • Детекты: Skyhigh (BehavesLike.Win64.Ransomware.cm)

  • Где в коде:

    1. Массовое принудительное убийство процессов (KillProcessTreeRecursive, TerminateProcess).

    2. Вызов низкоуровневых операций сброса буферов (FlushAllVolumeBuffers, SetSystemFileCacheSize).

    3. Манипуляции с загрузчиком и теневыми копиями:

      bcdedit /deletevalue ..., вызовы manage-bde.exe (BitLocker).

  • Почему срабатывает:

    Рансомварь перед шифрованием обычно глушит чужие процессы (базы данных, софт), останавливает службы (net stop), сбрасывает кэши и трогает загрузчик. Skyhigh среагировал именно на совокупность этих системных вызовов.


Как исправить и снизить детекты:

  1. Полностью отказаться от WinRing0 (Критично):

    • Это уберет детекты от DrWeb, Rising и снимет подозрения с десятка других движков.

    • Если вам нужен мониторинг температур: используйте только WMI / ACPI / PDH (они у вас уже есть как fallback) либо сертифицированный современный драйвер (например, с подписью WHQL/EV).

  2. Пересмотреть механизм обновления (Обновление через внешний апдейтер):

    • Не производите горячую самозамену основного файла из памяти.

    • Выносите процесс обновления в отдельный простой скрипт/установщик, либо открывайте браузер на страницу релиза вместо прямого скачивания .tmp и перезаписи.

  3. Убрать лишние EnablePrivilege:

    • Не включайте SE_DEBUG_NAME глобально для приложения. Включайте его только в момент крайней необходимости (или ограничьтесь закрытием только своих дочерних/незащищенных процессов).

  4. Подпись кода (Code Signing):

    • У программы нет цифровой подписи. Любой неизвестный бинарник с низким рейтингом доверия (reputation score) при наличии подозрительных API почти гарантированно получает Trojan:Win32/Wacatac.B!ml от Microsoft Defender.

    • Подпишите файл хотя бы доверенным самоподписанным сертификатом или отправьте семпл как False Positive на порталы вендоров (в частности, в Microsoft Security Intelligence).


Лайкнул Сибирь
Сибирь

Полный контроль над алгоритмом "Горячего лимита"

Принято решение отказаться от жёстко зашитых рамок в коде и передать пользователю абсолютный контроль над поведением процессора при нагреве и остывании.

В файл settings.ini добавлена новая секция [Thermal], позволяющая тонко настроить поведение системы охлаждения под конкретное железо (от горячих ноутбуков до мощных ПК):

ThermalStepDownInterval — интервал между снижениями частоты (по умолч. 1.5 сек);
ThermalStepUpInterval — задержка плавного возврата частоты (по умолч. 7.0 сек);
ThermalStepDown / Up — шаг сброса и набора частоты процессора (по умолч. 5%);
ThermalMinCpuPos — минимальный предел частоты (по умолч. 50%), ниже которого процессор не опустится, предотвращая статтеры в играх;
ThermalRecoveryDelta — порог остывания для начала восстановления частоты (по умолч. 6 градусов);
ThermalTurboDelta — порог остывания для повторного включения Turbo Boost (по умолч. 12 градусов);
ThermalPanicDelta — дельта аварийного перегрева для мгновенного сброса (по умолч. 3 градуса);
ThermalPanicStepDown — агрессивный шаг снижения частоты при резком скачке тепла (по умолч. 10%).

Всплывающая подсказка слайдера "Горячий лимит" теперь динамически считывает и отображает ваши персональные параметры из конфигурационного файла.

disk.yandex.ru/d/E_vfHfAcbNM6gg

Графический интерфейс для настройки режима "Лимит"

В подменю "🕹 Игровые оптимизации" добавлен пункт "⚙ Настроить режим Лимит", открывающий компактное окно по центру экрана.

При переходе между полями программа автоматически проверяет введённое число и при необходимости подставляет минимально или максимально допустимое значение, исключая опечатки или случайный ввод пустых строк.

Новые параметры вступают в силу сразу после нажатия "Сохранить", а всплывающая подсказка слайдера "Горячий лимит" моментально пересчитывает и отображает ваши актуальные значения без перезапуска программы.

disk.yandex.ru/d/E_vfHfAcbNM6gg

Устранено зависание UI при переключении аудиоустройств и микрофона

Убран вызов RunAsync для действий СКМ ToggleDefaultAudioPlaybackDevice и ToggleMicrophoneMute.
Предотвращено ошибочное создание окна OSD-индикатора (g_hBrightnessOsd) в фоновом потоке пула без цикла сообщений.
Восстановлена корректная работа таймера автоскрытия OSD (SetTimer), который сбоил при межпоточном вызове, вызывая бесконечное отображение плашки и взаимную блокировку (deadlock) главного потока.

disk.yandex.ru/d/E_vfHfAcbNM6gg

Настройки режима "Лимит"

Окно настроек больше не закрывается после нажатия кнопки "Сохранить", что позволяет непрерывно подбирать значения и сразу наблюдать за поведением частот и температур в стресс-тестах (OCCT, AIDA64 и др.).

Кнопка "Отмена" переименована в "Закрыть".
При нажатии кнопки "По умолчанию" добавлено окно подтверждения с возможностью отмены клавишей ESC.

disk.yandex.ru/d/E_vfHfAcbNM6gg

Помимо пользователя Сибирь и Arman, кто-нибудь ещё мониторит ветку?
Маякните )

Лайкнул Сибирь
Сибирь

Добавлена интеграция с Core Temp

Теперь Троица умеет считывать температуры ядер процессора напрямую из работающей утилиты Core Temp через механизм разделяемой памяти (Shared Memory).
Позволяет полноценно использовать режим "Лимит" на Windows 11 с активной "Изоляцией ядра" (HVCI / Memory Integrity), полностью обходя блокировку встроенного драйвера WinRing0.

disk.yandex.ru/d/E_vfHfAcbNM6gg

Лайкнул Сибирь
Сибирь

Реализовано прямое считывание температур процессора из работающей утилиты AIDA64 через механизм разделяемой памяти (Shared Memory).
Считывание происходит напрямую из памяти без использования медленных WMI-запросов и с 0% нагрузки на процессор.

Алгоритм автоматически отслеживает как общую температуру процессора (CPU / Package), так и пиковые температуры отдельных ядер, выбирая максимальное значение.
Поддерживает опрос как локального, так и глобального пространства имён (Global\AIDA64_SensorValues) при любых уровнях прав UAC.
Обеспечивает полноценную работу функции "Горячий лимит" на Windows 11 с активной "Изоляцией ядра" (HVCI / Memory Integrity) без необходимости загрузки встроенного драйвера WinRing0.

Чтобы механизм заработал, в самой AIDA64 должна быть включена соответствующая опция:
Файл -> Настройки -> Мониторинг оборудования -> Внешние приложения -> Поделиться памятью (Enable shared memory)

disk.yandex.ru/d/E_vfHfAcbNM6gg

Лайкнул Сибирь
Сибирь

Реализовано прямое считывание температур процессора из работающей утилиты HWiNFO через механизм разделяемой памяти (Shared Memory).
Считывание происходит напрямую из памяти без использования медленных WMI-запросов и с 0% нагрузки на процессор.

Алгоритм автоматически отслеживает общую температуру процессора (CPU Package / Tctl / Tdie) и пиковые температуры отдельных ядер (Core Max / Cores), выбирая максимальное значение.

При запуске программы в маленьком стартовом окошке нажмите кнопку "Настройки" (Settings) и на первой вкладке включите пункт "Поддержка совместно используемой памяти" (Shared Memory Support).
В бесплатной редакции HWiNFO опция активируется на 12 часов непрерывной работы.

disk.yandex.ru/d/E_vfHfAcbNM6gg

Лайкнул Сибирь
Сибирь

Помимо пользователя Сибирь и Arman, кто-нибудь ещё мониторит ветку?Маякните )

Dehote9223, день добрый!
Я бы не полагался на "лайки", чтобы понять кто следит/ насколько программа востребована. Возможны люди, которые не зарегистрированы и следят или просто "тихие" по своей натуре)). Я вот, например, тоже почти никогда не комментирую и не регистрируюсь, а просто слежу за тем, что мне важно. Эта ветка и ветка Defender_killer - исключение, программы слишком сильно меня зацепили, прям очень👍. Ну и сам win10tweaker, понятное дело. А вообще... люди разные бывают, особенно в нашей "тех-среде" есть уйма интровертов-невидимок :))).

А, вот подумал ещё, ты можешь смотреть на количество просмотров в своём яндекс-диске, это может быть для тебя кое-какой индикатор. На данный момент я вижу у тебя 530. Ну и добавить надо то долгое время, когда программа была не в папке (old_версия) и тогда просмотров/скачиваний будет в разы больше😉.

Настройки режима "Лимит"

Теперь по двойному клику ЛКМ по свободной области окна все текущие значения полей копируются в буфер обмена в готовом формате конфигурации [Thermal].
Это позволяет поделиться настройками или перенести их в settings.ini на другом компьютере.

Примечание

Для актуальности данных копирование рекомендуется выполнять после применения изменений кнопкой "Сохранить".

disk.yandex.ru/d/E_vfHfAcbNM6gg

Лайкнул Сибирь
Сибирь

Сибирь, привет!
По-моему, Яндекс учитывает в статистике только тех, кто заходит с аккаунта Яндекса )

Изменён каталог распаковки и запуска низкоуровневого драйвера температурных датчиков (WinRing0x64.sys)

Вместо системной временной папки пользователя (%TEMP%) драйвер теперь извлекается в постоянный защищённый каталог %ProgramData%\Trinity\.
Если служба TrinityRing0 уже была зарегистрирована в системе предыдущей версией программы, путь к драйверу (ImagePath) автоматически обновляется на новое расположение через ChangeServiceConfigW перед стартом.

В случае недоступности ProgramData драйвер размещается непосредственно в рабочей папке рядом с исполняемым файлом приложения.
Логика выгрузки и очистки драйвера (CleanupRing0Driver) синхронизирована с новым путём.

disk.yandex.ru/d/E_vfHfAcbNM6gg

В контекстное меню трея добавлен пункт-чекбокс "🔤 Жирный шрифт"

По умолчанию шрифт интерфейса жирный, но теперь галочку можно снять, чтобы сделать шрифт в окне программы классическим тонким.
Выбранное состояние автоматически сохраняется в settings.ini.

disk.yandex.ru/d/E_vfHfAcbNM6gg

Изменения в работе температурного драйвера (WinRing0)

Принято решение убрать драйвер прямого доступа к датчикам процессора (WinRing0x64.sys) из ресурсов самой программы.
Для исключения ложных срабатываний антивирусов (Dr.Web, Защитник Windows и др.), которые ошибочно помечали саму Троицу из-за наличия стороннего низкоуровневого драйвера внутри .exe.

Если датчики температуры не отображаются

Если при запуске программы напротив слайдера "Лимит" вы видите статус "Нет WMI-датчиков" (или "Нет драйвера"), это означает, что драйвер отключен в настройках или пока не установлен на компьютере.

Как включить или скачать драйвер

Нажмите правой кнопкой мыши (ПКМ) по иконке Троицы в трее и перейдите в подменю "🕹 Игровые оптимизации".
Снимите галочку с пункта "🛑 Отключить температурный драйвер Троицы".

Если драйвер отсутствует на ПК, появится диалоговое окно с предложением автоматически скачать и активировать его из официального облака Троицы.

Важно (для Windows 11 и систем с активной Изоляцией ядра)

В Windows 11 встроенная защита системы по умолчанию блокирует запуск большинства низкоуровневых драйверов прямого доступа к "железу".
Если после загрузки драйвера напротив слайдера появляется статус "Лимит (VBS/HVCI блокирует драйвер)", необходимо отключить эту блокировку в Windows.

ПКМ по иконке в трее ➔ подменю "🕹 Игровые оптимизации" ➔ выберите пункт "🛡 Отключить изоляцию ядра (VBS / HVCI)" (потребуется перезагрузка компьютера).

disk.yandex.ru/d/E_vfHfAcbNM6gg

Лайкнул Сибирь
Сибирь
1◄Страница 12 из 27► 27