Windhawk Windows 11: il tool "proibito" che modifica taskbar, Explorer e menu in tempo reale

Windhawk cambia il modo di personalizzare Windows 11: applica mod e patch direttamente in memoria, senza modificare i file di sistema. Ecco come funziona il tool che permette di trasformare taskbar, Esplora file e shell di Windows con hook e codice a runtime.

Windows 11 ha reso la personalizzazione dell’interfaccia più complicata rispetto al passato. A parte le modifiche più conosciute, Windows 11 tende a nascondere molte customizzazioni: se va bene, alcune di esse sono applicabili intervenendo sulla configurazione del sistema; se va male, invece, non è possibile apportare alcuna variazione – neppure da parte degli utenti più esperti -.

In Windows 11, infatti, gran parte dell’interfaccia risulta poggiare sopra componenti molto più frammentati: c’è una barra delle applicazioni completamente riscritta (che sarà oggetto di numerose correzioni), ci sono elementi basati su XAML, porzioni della shell separate in processi differenti, logiche della GUI che cambiano quasi a ogni aggiornamento cumulativo.

A differenza di molti software storici per il tweaking di Windows, Windhawk (download) non altera in modo permanente i file di sistema: il suo approccio è molto più vicino a quello usato negli strumenti di debugging.

Cos’è e come funziona Windhawk in Windows 11

Windhawk è un software libero, pubblicato sotto licenza GNU GPLv3, che interviene direttamente sui processi Windows già in esecuzione. Come abbiamo spiegato nella guida a Windhawk, il programma permette di applicare patch in memoria: tutte le modifiche avvengono a runtime e il filesystem resta intatto.

Il software inserisce codice personalizzato all’interno dei processi in esecuzione su Windows 11 e applica hook sulle funzioni interne del sistema, cioè si aggancia a specifiche funzioni di Windows per intercettarne l’esecuzione e modificarne il comportamento. Inoltre, Windhawk monitora e intercetta le chiamate alle API, ovvero le richieste che i programmi inviano al sistema operativo per usare funzioni e servizi di Windows, alterando in tempo reale il comportamento della shell di sistema direttamente in memoria.

Uno strumento come Windhawk utilizza le stesse tecniche di basso livello impiegate da debugger, overlay grafici, software di monitoraggio: codice assembly per reindirizzare l’esecuzione del programma, API hooking e le patch applicate a runtime permettono di modificare o intercettare il comportamento di un software mentre è in esecuzione. Si tratta di meccanismi molto potenti, ma anche estremamente delicati, perché anche un piccolo errore può causare instabilità oppure crash.

Nel caso di Windhawk, per come funziona il programma, basta disattivare le mod o chiudere l’applicazione per ripristinare il normale funzionamento di Windows 11 (in alcuni casi può risultare necessario arrestare singoli processi, dal Task Manager o con taskkill, oppure riavviare la macchina).

Cosa sono le mod di Windhawk

Le mod di Windhawk non sono semplici plugin nel senso classico del termine: tecnicamente sono frammenti di codice nativo – generalmente C/C++ – progettati per essere caricati dentro processi Windows esistenti e modificarne il comportamento a runtime attraverso le modalità descritte in precedenza.

Mod Windhawk

Un’estensione per il browser, ad esempio, opera entro i confini di API documentate e sandbox controllate; viceversa, una mod Windhawk può intervenire direttamente nella memoria dei processi caricati in Windows 11, sulle finestre visualizzate, nelle routine interne della shell, nelle API non documentate di Windows. Ciascuna mod è eseguita con gli stessi privilegi del processo che essa aggancia.

Windhawk scarica le mod dal proprio repository online e le memorizza in locale nel profilo dell’utente (di solito nelle cartelle %programdata%\Windhawk, %localappdata%\Windhawk oppure nella directory dell’applicazione se si sceglie la versione portabile).

La parte interessante è che le mod sono compilate in locale: significa che Windhawk scarica il codice del mod, lo compila, genera il modulo binario e lo inietta nel processo target. Di fatto il sistema trasforma piccoli frammenti di codice custom in DLL runtime capaci di alterare il comportamento di Esplora file o di altri processi Windows.

Cosa contiene realmente una mod

Una mod Windhawk tipico contiene metadati, configurazioni, codice C++, funzioni di inizializzazione, hook e callback runtime. Una struttura minimale può assomigliare a qualcosa del genere:

#include 

BOOL Wh_ModInit() {
    // installazione hook
    return TRUE;
}

A questo punto va rimarcato che una mod è codice nativo eseguito dentro processi critici di Windows. Per questo motivo gli autori di Windhawk esortano a eseguire soltanto codice affidabile, verificato e distribuito da autori attendibili.

Cliccando sul pulsante Dettagli, nel riquadro di ciascuna mod Windhawk, è possibile approfondire, con la possibilità di esaminare il codice sorgente, cliccando sulla scheda omonima.

Codice sorgente mod Windhawk

Subito sotto la descrizione di ogni mod, accanto al simbolo del bersaglio oppure accanto a @include, nel sorgente, si trovano i riferimenti espliciti ai processi di Windows 11 che il codice va a modificare.

Perché bisogna fare attenzione alle mod

Una mod Windhawk ha spesso accesso completo al processo in cui viene caricata: se il target, ad esempio, è explorer.exe, la mod eredita privilegi, memoria, accesso alla shell, interazioni desktop e gestione delle finestre.

Codice scritto male può causare crash continui del processo oggetto di modifica, generare memory leak, bloccare la shell, rompere i menu contestuali, interferire con altri hook e degradare le prestazioni. D’altra parte, una mod malevola potrebbe teoricamente intercettare input, monitorare finestre, leggere dati, manipolare processi, eseguire codice arbitrario.

Molte mod Windhawk, come accennato, non lavorano su API ufficiali Microsoft. Intercettano invece funzioni interne dei processi, simboli privati, componenti shell non documentate, routine Win32 legacy.

Naturalmente Microsoft può modificare in qualsiasi momento il comportamento dei processi, ad esempio cambiando gli offset (gli indirizzi o le posizioni dei dati in memoria), ricompilando il codice, modificando i simboli di debug oppure rimuovendo alcune funzioni. È il motivo per cui alcune mod smettono improvvisamente di funzionare dopo l’installazione di aggiornamenti cumulativi.

Detto questo, Windhawk rappresenta un modo eccellente per plasmare Windows 11 e adattarne il comportamento alle aspettative ed esigenze di ogni utente.

Il momento chiave: hooking a runtime con Windhawk

Molte mod Windhawk usano l’hooking inline: alcune istruzioni all’inizio di una funzione sono sostituite con un salto verso codice personalizzato. Il flusso diventa il seguente:

Processo Windows 11 chiama la funzione originale
Hook installato da Windhawk
Esecuzione codice custom della mod
Ritorno alla funzione originale

In memoria si osserva spesso la comparsa di un salto come jmp custom_handler, posizionato al posto delle istruzioni originali della funzione: con x64dbg il comportamento è visibile in tempo reale.

Se, ad esempio, una mod Windhawk modifica Esplora file, attaccando x64dbg a explorer.exe e cercando una funzione hookata, è possibile vedere la patch runtime direttamente nel codice macchina. Normalmente una funzione Windows inizia con il proprio prologo assembly:

push rbp
mov rbp,rsp
sub rsp,30

Dopo l’installazione e l’attivazione della mod Windhawk per Windows 11 può invece comparire qualcosa come jmp 00007FF....: quel salto porta proprio al codice arbitrario caricato.

Creare una mod personalizzata Windhawk per Windows 11

Per capire davvero la logica di Windhawk, il modo migliore è osservare una mod minimale.

Si può partire da un caso molto semplice: intercettare una funzione Win32 innocua, come MessageBoxW, e modificarne il testo prima che sia mostrato all’utente. Il principio è lo stesso usato da mod più complesse per Esplora file, barra delle applicazioni e menu contestuali: cambia solo il livello di difficoltà nell’individuare la funzione giusta da agganciare.

Dalla schermata principale di Windhawk, cliccate su Crea una nuova mod in basso a destra quindi su Inizia la codifica.

Incollate quindi quanto segue:

// ==WindhawkMod==
// @id              test-messageboxw-hook
// @name            Test MessageBoxW Hook
// @description     Mod dimostrativa che intercetta MessageBoxW
// @version         0.2
// @author          Test
// @include         wscript.exe
// @include         powershell.exe
// @include         pwsh.exe
// @architecture    x86-64
// ==/WindhawkMod==

#include 

using MessageBoxW_t = int (WINAPI *)(HWND, LPCWSTR, LPCWSTR, UINT);
MessageBoxW_t MessageBoxW_Original;

int WINAPI MessageBoxW_Hook(HWND hWnd, LPCWSTR text, LPCWSTR caption, UINT type) {
    return MessageBoxW_Original(
        hWnd,
        L"Testo modificato dalla mod Windhawk",
        caption,
        type
    );
}

BOOL Wh_ModInit() {
    Wh_SetFunctionHook(
        (void*)MessageBoxW,
        (void*)MessageBoxW_Hook,
        (void**)&MessageBoxW_Original
    );

    return TRUE;
}

Il codice mostra il meccanismo essenziale: si conserva un puntatore alla funzione originale, si definisce una funzione sostitutiva e poi si chiede a Windhawk di deviare le chiamate verso il nuovo handler. Per provarlo subito cliccate il pulsante Compila la mod.

Quando il processo invoca MessageBoxW, la storica funzione che fa apparire un messaggio informativo sullo schermo, l’esecuzione passa prima dal codice della mod; quest’ultimo può alterare parametri, bloccare la chiamata, registrare informazioni oppure richiamare la funzione originale con valori modificati.

Mod personalizzata Windhawk

Se provate a generare da una finestra PowerShell un messaggio con MessageBoxW, anziché comparire il testo Messaggio originale, vedrete apparire Testo modificato dalla mod Windhawk! Almeno fintanto che Windhawk resta in esecuzione con la mod personalizzata attiva.

Add-Type -AssemblyName PresentationFramework
[System.Windows.MessageBox]::Show("Messaggio originale")

Modifica in tempo reale funzioni Windows 11

Personalizzare la Cronologia degli appunti di Windows 11 con Windhawk

Di recente abbiamo avuto la necessità di personalizzare il comportamento della funzione Cronologia degli appunti di Windows 11, la cui finestra è richiamabile pemendo la combinazione di tasti Windows+V.

Volevamo renderla espandibile in orizzontale e ancorata al lato destro dello schermo. Inoltre, volevamo rimuovere il comportamento predefinito del sistema che impedisce di fare clic su una finestra sottostante oppure di fare scrolling.

Windhawk mod Cronologia appunti Windows 11

Così è nata questa mod per Windhawk che modifica la Cronologia degli appunti di Windows 11: il codice può essere copiato nella finestra Crea una nuova mod per poi fare clic su Compila la mod.

Il funzionamento della mod spiegato in poche parole

La mod che interviene sulla finestra nativa della Cronologia appunti di Windows individua periodicamente, dentro explorer.exe, la finestra corretta cercando una ApplicationFrameWindow con dimensioni compatibili. Quando la trova, la aggancia con una procedura personalizzata (WinVProc) e la sposta sul lato destro dello schermo, usando la larghezza configurata nelle impostazioni.

Poi abilita il ridimensionamento orizzontale aggiungendo WS_THICKFRAME e WS_SIZEBOX. Purtroppo non è possibile agire sull’altezza quindi tale impostazione viene bloccata: nei messaggi WM_SIZING, WM_WINDOWPOSCHANGING e WM_GETMINMAXINFO, la mod forza sempre la stessa altezza iniziale.

Infine gestisce l’overlay Shell_LightDismissOverlay, cioè la finestra invisibile che Windows usa per intercettare i clic fuori dalla Cronologia degli appunti. La mod la sposta fuori schermo a coordinate -32000, -32000 con dimensione 1x1, così clic e scrolling sulle finestre sottostanti tornano utilizzabili.

Conclusioni

Windhawk dimostra quanto Windows 11 sia diventato internamente complesso e frammentato rispetto al passato. Proprio perché molte personalizzazioni non sono più accessibili tramite semplici impostazioni o modifiche sul registro di sistema, strumenti capaci di intervenire direttamente sulla shell e sui processi in memoria assumono un ruolo sempre più importante.

L’approccio adottato da Windhawk è potente e sofisticato: hook runtime, patch dinamiche e mod compilate in locale permettono di alterare il comportamento dell’interfaccia senza modificare i file di sistema.

Allo stesso tempo, questa libertà richiede attenzione: le mod operano dentro processi critici di Windows 11 e possono causare instabilità oppure smettere di funzionare dopo un aggiornamento cumulativo. Per gli utenti esperti, però, Windhawk rappresenta probabilmente una delle piattaforme più interessanti oggi disponibili per riprendere il controllo dell’esperienza utente e adattare Windows 11 alle proprie esigenze.

Ti consigliamo anche

Link copiato negli appunti