Как устроен Windhawk и почему модифицировать Windows снова стало удобно
Каждый, кто пробовал настроить Windows под свои привычки, неизбежно упирался в ограничения системы. В Windows 11 убрали привычные функции панели задач, проводник периодически меняет логику работы, а нужная мелочь в сторонней программе не настраивается штатными средствами. Раньше для каждой такой правки приходилось искать отдельные твикеры, патчить системные библиотеки или скачивать сомнительные бинарники с форумов.
Проект Windhawk подошел к задаче с другой стороны. Его идея напоминает Tampermonkey для браузеров или Magisk для смартфонов, но работает в среде классических приложений Windows.

Что такое Windhawk
Windhawk создал разработчик m417z, известный в сообществе системных утилит по проекту 7+ Taskbar Tweaker. В отличие от старых твикеров, которые представляли собой монолитные утилиты, здесь автор выстроил открытую платформу.
Суть проста: есть единый движок внедрения кода и каталог небольших модов. Каждый мод решает конкретную проблему — возвращает классическую панель задач, добавляет регулировку громкости колесиком мыши над треем или убирает лишние кнопки из проводника.
Пользователь видит аккуратный графический интерфейс, где можно включить нужный фикс одним кликом. Для разработчиков же Windhawk открывает полноценную среду создания хуков на C++ прямо внутри программы, с встроенным редактором кода и мгновенной компиляцией.
Архитектура и технические детали
Главная сложность при модификации программ в Windows — сделать так, чтобы код внедрялся вовремя, работал стабильно и не ломал соседние процессы.

В репозитории исходный код разбит на три основных компонента:
windhawk— системный сервисwindhawk.exe, а также 32-битная и 64-битная библиотекиwindhawk.dll, которые отвечают за глобальный инжект и перехват функций;vscode-windhawk— бэкенд интерфейса, управляющий установкой, обновлением и конфигурацией модов;vscode-windhawk-ui— фронтенд на базе веб-технологий и редактора Monaco, где настраиваются параметры и пишется код модов.
Движок использует глобальный перехват и инжекцию DLL в целевые процессы. Когда запускается программа, попадающая под правила модификации, Windhawk внедряет свою библиотеку. Эта библиотека перехватывает вызовы Win32 API или внутренние недокументированные функции приложения, заменяя их поведение на то, что описано в моде.
Такой подход защищает операционную систему от повреждений. Файлы на диске не модифицируются, системные библиотеки остаются нетронутыми, а проверка целостности sfc /scannow не выдает ошибок. Если после обновления Windows какой-то мод начинает сбоить, достаточно отключить его в интерфейсе или запустить систему в безопасном режиме.
Как пишутся моды
Для написания модификаций не требуется разворачивать тяжелый Visual Studio со всеми системными SDK. Windhawk скачивает необходимый тулчейн компилятора в фоне.
Исходный код мода представляет собой C++ файл со специальными метаданными в комментариях, похожими на юзерскрипты браузеров:
// ==WindhawkMod==
// @id custom-window-title
// @name Custom Window Title
// @description Изменяет заголовок окна блокнота
// @version 1.0
// @include notepad.exe
// ==/WindhawkMod==
#include <windhawk_api.h>
typedef HWND (WINAPI *CreateWindowExW_t)(
DWORD dwExStyle, LPCWSTR lpClassName, LPCWSTR lpWindowName,
DWORD dwStyle, int X, int Y, int nWidth, int nHeight,
HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam
);
CreateWindowExW_t pOriginalCreateWindowExW;
HWND WINAPI Hook_CreateWindowExW(
DWORD dwExStyle, LPCWSTR lpClassName, LPCWSTR lpWindowName,
DWORD dwStyle, int X, int Y, int nWidth, int nHeight,
HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam
) {
if (lpWindowName && wcscmp(lpWindowName, L"Untitled - Notepad") == 0) {
lpWindowName = L"Мой кастомный блокнот";
}
return pOriginalCreateWindowExW(dwExStyle, lpClassName, lpWindowName, dwStyle, X, Y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam);
}
BOOL Wh_ModInit() {
Wh_Log(L"Инициализация мода");
HMODULE hUser32 = GetModuleHandle(L"user32.dll");
void* pCreateWindowExW = (void*)GetProcAddress(hUser32, "CreateWindowExW");
Wh_SetFunctionHook(pCreateWindowExW, (void*)Hook_CreateWindowExW, (void**)&pOriginalCreateWindowExW);
return TRUE;
}
Мод компилируется прямо в приложении. Движок отслеживает изменения в файле и перезагружает динамическую библиотеку в целевом процессе без необходимости перезапускать операционную систему.
Практическая польза
Инструмент закрывает сразу несколько сценариев, которые раньше требовали костылей.
Во-первых, тонкая настройка интерфейса проводника и панели задач. Доступны моды для изменения высоты панели, скрытия ненужных пунктов контекстного меню, переключения вкладок колесом мыши и кастомизации трея.
Во-вторых, исправление раздражающего поведения стороннего софта. Если в программе нет горячей клавиши или окно не сворачивается в трей штатно, можно написать хук для user32.dll или win32u.dll и переопределить обработку оконных сообщений.
В-третьих, это отличная база для реверс-инжиниринга. Если вы изучаете устройство приложений под Windows, Windhawk упрощает эксперименты с перехватом функций, логированием параметров и проверкой гипотез.
Нюансы и ограничения
При работе с глобальным инжектом важно учитывать особенности защитного софта. Антивирусы иногда реагируют на перехват функций в системных процессах, хотя исполняемые файлы проекта имеют валидную цифровую подпись.
Для написания сложных модов под недокументированные интерфейсы проводника все еще нужны навыки реверс-инжиниринга и понимание работы с отладчиком вроде x64dbg или IDA Pro. Интерфейсы Windows часто меняются от сборки к сборке, поэтому авторам приходится поддерживать сигнатуры функций для разных версий библиотек.
Стоит ли пробовать
Windhawk превратил разрозненный мир твиков Windows в структурированную и прозрачную среду. Проект написан на C++ и Rust, распространяется по лицензии GPL-3.0 и имеет активное сообщество разработчиков.
Если вам не хватает привычных функций в Windows 11, проект стоит установить хотя бы ради готового каталога модов. А разработчикам на C++, интересующимся низкоуровневым Win32 API, исходники репозитория покажут много практических приемов внедрения библиотек и хукинга.
