Capita spesso, utilizzando Windows o un programma specifico, di non trovare quella funzione che aiuterebbe a snellire il proprio lavoro. Non è affatto semplice modificare Windows e gli altri programmi proprietari quando non è disponibile alcun codice sorgente.
Nel caso della piattaforma Microsoft, si può personalizzare il sistema usando, ad esempio, degli script che consentano di velocizzare Windows 11 e ottimizzarlo oppure rendere più veloce Windows 10 adattandolo alle proprie aspettative. In tutti i casi, tuttavia, si utilizzano modifiche che Microsoft ha previsto e che sono attivabili agendo ad esempio sulla configurazione del registro di sistema.
Windhawk permette di modificare Windows e programmi in esecuzione
Un’applicazione open source che si chiama Windhawk rilasciata a marzo 2022 e uscita dalla “beta” a novembre 2023, permette di modificare Windows e tutti gli altri programmi in esecuzione intervenendo direttamente sui processi caricati in memoria.
Molteplici situazioni possono indurre un utente a modificare l’istanza di un programma in esecuzione. Può essere necessario aggiungere una personalizzazione minore o arricchire l’applicazione di una funzionalità mancante. L’intervento può rivelarsi utile, ad esempio, quando un programma non fosse più aggiornato, quando lo sviluppatore si rifiuta di aggiungere una funzionalità o correggere un bug oppure, ancora, sulla base di altre motivazioni.
Modificare i processi in esecuzione in Windows
Windhawk consente di modificare un processo Windows in memoria, mentre è caricato a livello del sistema operativo. I processi in esecuzione su un sistema Windows vengono caricati in memoria e contengono le istruzioni e i dati necessari per eseguire le attività del programma.
Il comportamento di un processo può implicare la manipolazione dei dati all’interno del processo, ad esempio la modifica dei valori delle variabili; potrebbe essere necessario alterare il codice eseguibile all’interno del processo così da cambiare il comportamento del programma; ancora, si potrebbero dover modificare i registri della CPU, i puntatori, le strutture dati o altri parametri che influenzano il comportamento del processo.
Perché modificare un eseguibile è svantaggioso
Una “patch binaria” è un file o un insieme di dati applicato direttamente sul codice eseguibile di un programma per modificarne il comportamento, risolvere errori, apportare miglioramenti o correggere vulnerabilità senza accedere al codice sorgente originale dell’applicazione stessa. Questo tipo di operazione, nel caso dei software proprietari, è generalmente vietata nelle condizioni di licenza d’uso.
La modifica diretta di un eseguibile (in Windows .exe
) o di una libreria DLL ha altri svantaggi. Basti pensare che se il file eseguibile contiene una firma digitale, qualunque modifica apportata al contenuto del file la rende automaticamente non più valida. Inoltre, ogni volta che un file eseguibile è aggiornato dalla software house sviluppatrice, è necessario creare una nuova patch ovvero una versione modificata dello stesso oggetto.
Se qualcosa va storto con la patch, non esiste un modo semplice per annullare le modifiche: bisogna fare attenzione a creare un backup prima di applicare la patch. E se l’eseguibile o la libreria modificati fossero parte integrante del sistema operativo, in alcune situazioni potrebbe addirittura risultare complicato ripristinare la situazione originaria, anche in modalità provvisoria.
I vantaggi di modificare Windows e gli altri programmi in memoria
La modifica di un’istanza in esecuzione di qualsiasi programma già caricato in memoria, è solitamente la soluzione migliore, più sicura e più solida. Una patch applicata in memoria può essere attivata al bisogno e rimossa semplicemente chiudendo l’applicazione “target”. In caso di eventuali errori, inoltre, anche nel caso in cui il sistema diventasse instabile, basta arrestare il singolo programma o riavviare la macchina per superare l’impasse.
Apportare modifiche a un’applicazione proprietaria (non si ha disponibilità, lo ricordiamo, del codice sorgente) può essere un compito piuttosto impegnativo. Oltre all’implementazione della personalizzazione, è necessario ricorrere al meccanismo di Process Injection per iniettare del codice nel processo in esecuzione.
L’attività di Function Hooking consente poi di sostituire o intercettare le chiamate a funzioni esistenti per modificarne il comportamento. Con il Symbol Loading è possibile procedere con il caricamento dei simboli e delle risorse necessarie per la modifica dell’applicazione.
Descrizione ad alto livello del funzionamento di Windhawk (fonte: repository GitHub, Ramen Software).
Cosa permette di fare Windhawk
Windhawk è un’applicazione progettata per semplificare il processo di implementazione di personalizzazioni o modifiche a programmi esistenti. Lo strumento si propone di eliminare le sfide associate alla realizzazione di queste personalizzazioni, consentendo ai programmatori di concentrarsi esclusivamente sulla creazione della modifica stessa.
Il programma si occupa degli aspetti più complessi come la fase di Process Injection, consente di condividere le modifiche con altri utenti rendendo il processo di distribuzione delle personalizzazioni più efficiente e accessibile.
Le modifiche che Windhawk può apportare si chiamano mod, abbreviazione di modification. Si tratta di pacchetti “preconfezionati” da altri sviluppatori che consentono di alterare il comportamento di Windows o di qualunque altra applicazione in memoria.
Prima ancora di utilizzare Windhawk, potete accedere alla pagina Web Browse for mods che elenca tutte le modifiche già disponibili nel programma e attivabili con un semplice clic. Nel caso di Windows, alcuni cambiamenti applicabili all’interfaccia sono stati implementati da Microsoft con il rilascio degli ultimi pacchetti Moment e con il rilascio del più recente feature update.
Cliccando su Dettagli, per ciascuna mod è possibile scoprire le informazioni tecniche ed esaminare il codice sorgente. Gli utenti più esperti, con una rapida analisi del codice, possono accertarsi piuttosto facilmente che la modifica sia legittima e non comporti potenziali problemi di sicurezza e privacy.
Ogni mod realizzata con Windhawk è costituito da un singolo file di codice: questo rende più agevole per gli utenti verificare e comprendere cosa fa effettivamente la modifica, a differenza di un file eseguibile, il cui funzionamento è certamente più difficile da verificare.
Per applicare una mod è sufficiente che l’icona di Windhawk sia presente nella traybar di Windows: quando l’icona non è presente, tutte le modifiche non sono applicate.
Come usare Windhawk
Per usare una mod e applicarla in Windows, basta selezionarla dall’interfaccia del programma quindi fare clic sul pulsante Installa. L’applicazione richiama l’attenzione sul fatto che eventuali mod dannose possono danneggiare il sistema o violare la privacy dell’utente: è quindi importante installare soltanto mod affidabili, apprezzate da altri utenti e soltanto previa analisi del corrispondente codice sorgente.
Con un clic su Accetta il rischio, la modifica risulta immediatamente attiva, senza la necessità di riavviare il sistema o applicare interventi a livello di file system. Proprio perché essa avviene in memoria.
Windhawk può essere pericoloso?
Di per sé Windhawk non è e non può essere un’applicazione pericolosa. Come mettono bene in evidenza gli sviluppatori, tuttavia, potrebbero presentarsi dei problemi nel caso in cui l’utente caricasse codice in memoria proveniente da fonti inaffidabili o “sviluppatori malevoli”.
A chi volesse provare i servigi di Windhawk, consigliamo di usare la versione portabile del programma: basta scegliere l’opzione Installazione portatile.
In questo modo, qualora ci si volesse liberare di Windhawk, basta cliccare con il tasto destro sull’icona nella traybar, scegliere Esci quindi rimuovere semplicemente la cartella nella quale sono salvati i file del programma. Questo perché, con l’Installazione portatile Windhawk non scrive alcuna informazione nel registro di sistema di Windows né memorizza altri file a livello di file system in altre cartelle diverse dalla sua.
Con un clic su Impostazioni suggeriamo inoltre di disattivare l’opzione Ricerca aggiornamenti.
Esaminando il sorgente C/C++ delle varie mod, è infatti possibile rendersi conto – nel dettaglio – del loro comportamento. Gli autori di Windhawk certamente effettuano una verifica del sorgente dei mod proposti. Potrebbe però accadere, cosa comune anche ad altri marketplace, che uno sviluppatore improvvisamente modifichi il comportamento di una sua modifica legittima facendola diventare pericolosa.
Sottolineiamo, di nuovo, che l’attenta analisi del codice sorgente da parte degli utenti in possesso delle necessarie competenze tecniche, aiuta a scongiurare qualunque potenziale problema.
Non è un programma per tutti
A dispetto della sua interfaccia semplice e rassicurante, Windhawk è un programma per “palati fini” che necessita di un’attenzione particolare quando si decidessero di abilitare una o più mod. Ciononostante è una soluzione versatile e flessibile che mette nelle mani degli utenti scenari praticamente infiniti. La possibilità di modificare Windows e i programmi in memoria in profondità è un po’ il Santo Graal cercato da molti utenti, in un ampio ventaglio di situazioni.
Cliccando sul pulsante Crea una nuova mod in basso a destra, i programmatori e gli utenti in possesso delle necessarie competenze (in primis nell’ambito dello sviluppo C/C++) possono realizzare le proprie modifiche avendo tra le mani l’opportunità di modificare qualunque programma.
Il modello di esempio fornito da Windhawk personalizza Microsoft Paint facendo in modo che tramite l’interfaccia possa essere usato un solo colore e l’utente non sia in grado di aprire alcun file. A partire dallo “scheletro” fornito, gli sviluppatori possono apportare qualunque tipo di modifica su qualsivoglia applicazione in esecuzione. I dettagli per iniziare sono pubblicati nella pagina Wiki “Creating a new mod“.
Credit immagine in apertura: iStock.com/Petro Bevz