Cómo funciona Windhawk y por qué modificar Windows volvió a ser conveniente
Cualquiera que haya intentado personalizar Windows según sus preferencias inevitablemente se encontró con limitaciones del sistema. Windows 11 eliminó funciones familiares de la barra de tareas, el Explorador cambia periódicamente su comportamiento y una función pequeña necesaria en un programa de terceros no se puede configurar con las herramientas integradas. Anteriormente, cada solución requería buscar tweakers separados, parchear bibliotecas del sistema o descargar binarios cuestionables de foros.
El proyecto Windhawk abordó la tarea desde un ángulo diferente. Su idea se parece a Tampermonkey para navegadores o Magisk para smartphones, pero funciona en el entorno de aplicaciones Windows clásicas.

Qué es Windhawk
Windhawk fue creado por el desarrollador m417z, conocido en la comunidad de utilidades del sistema por el proyecto 7+ Taskbar Tweaker. A diferencia de los tweakers antiguos, que eran utilidades monolíticas, el autor construyó aquí una plataforma abierta.
La esencia es simple: hay un motor de inyección de código unificado y un catálogo de pequeños mods. Cada mod resuelve un problema específico — restaura la barra de tareas clásica, añade ajuste de volumen con la rueda del ratón sobre la bandeja, o elimina botones innecesarios del Explorador.
Los usuarios ven una interfaz gráfica elegante donde pueden activar la soluciónneeded con un solo clic. Para los desarrolladores, Windhawk abre un entorno completo de creación de hooks en C++ dentro del programa, con un editor de código integrado y compilación instantánea.
Arquitectura y Detalles Técnicos
El desafío principal al modificar programas en Windows es garantizar que el código se inyecte a tiempo, funcione de manera estable y no rompa los procesos vecinos.

En el repositorio, el código fuente se divide en tres componentes principales:
windhawk— el servicio del sistemawindhawk.exe, así como las bibliotecas de 32 y 64 bitswindhawk.dllresponsables de la inyección global y la interceptación de funciones;vscode-windhawk— el backend de la interfaz que gestiona la instalación, actualizaciones y configuración de mods;vscode-windhawk-ui— el frontend basado en tecnologías web y el editor Monaco, donde se configuran los parámetros de los mods y se escribe el código.
El motor utiliza interceptación global e inyección de DLL en los procesos objetivo. Cuando se lanza un programa cubierto por las reglas de modificación, Windhawk inyecta su biblioteca. Esta biblioteca intercepta llamadas a la API Win32 o funciones internas no documentadas de la aplicación, reemplazando su comportamiento con lo que describe el mod.
Este enfoque protege al sistema operativo de la corrupción. Los archivos en disco no se modifican, las bibliotecas del sistema permanecen intactas y las verificaciones de integridad de sfc /scannow no reportan errores. Si algún mod deja de funcionar después de una actualización de Windows, simplemente puedes desactivarlo en la interfaz o iniciar el sistema en modo seguro.
Cómo se Escriben los Mods
Escribir modificaciones no requiere configurar un Visual Studio pesado con todos los SDK del sistema. Windhawk descarga la cadena de herramientas del compilador necesaria en segundo plano.
El código fuente de un mod es un archivo C++ con metadatos especiales en comentarios, similar a los userscripts de navegador:
// ==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;
}
El mod se compila directamente en la aplicación. El motor supervisa los cambios de archivos y recarga la biblioteca dinámica en el proceso objetivo sin necesidad de reiniciar el sistema operativo.
Beneficios Prácticos
La herramienta aborda varios escenarios que anteriormente requerían soluciones alternativas.
Primero, el ajuste fino de la interfaz del Explorador y la barra de tareas. Hay mods disponibles para cambiar la altura de la barra de tareas, ocultar elementos innecesarios del menú contextual, cambiar de pestañas con la rueda del ratón y personalizar la bandeja del sistema.
Segundo, corregir el comportamiento molesto de software de terceros. Si un programa carece de un atajo de teclado o su ventana no se minimiza a la bandeja por defecto, puedes escribir un hook para user32.dll o win32u.dll y redefinir el manejo de mensajes de ventana.
Tercero, es una excelente base para la ingeniería inversa. Si estás estudiando los entresijos de las aplicaciones de Windows, Windhawk simplifica los experimentos con interceptación de funciones, registro de parámetros y prueba de hipótesis.
Matices y Limitaciones
Al trabajar con inyección global, es importante considerar las specifics del software de seguridad. Los programas antivirus a veces reaccionan a la interceptación de funciones en procesos del sistema, aunque los ejecutables del proyecto tienen una firma digital válida.
Escribir mods complejos para interfaces no documentadas del Explorador todavía requiere habilidades de ingeniería inversa y comprensión del uso de depuradores como x64dbg o IDA Pro. Las interfaces de Windows cambian frecuentemente de compilación en compilación, por lo que los autores tienen que mantener las firmas de funciones para diferentes versiones de bibliotecas.
¿Vale la Pena Probarlo?
Windhawk ha transformado el mundo fragmentado de los ajustes de Windows en un entorno estructurado y transparente. El proyecto está escrito en C++ y Rust, distribuido bajo la licencia GPL-3.0, y tiene una comunidad activa de desarrolladores.
Si echas de menos funciones familiares en Windows 11, el proyecto vale la pena instalar al menos por el catálogo de mods listo para usar. Y para los desarrolladores de C++ interesados en la API Win32 de bajo nivel, el código fuente del repositorio mostrará muchas técnicas prácticas para la inyección de bibliotecas y el hooking.
Proyectos relacionados