Uno dei componenti di Windows che è presente da anni nel sistema operativo Microsoft è Rundll32: introdotto ai tempi di Windows 95 è stato conservato negli anni a venire, tanto che Windows 10 e Windows 11 se ne servono ancora oggi.
Rundll32 è stato progettato per caricare e chiamare funzioni all’interno delle librerie DLL, fornendo un’interfaccia tra il sistema operativo e le librerie condivise. Il suo nome è una combinazione di “Run” (eseguire) e “Dynamic Link Library” (libreria di collegamento dinamico), indicando il suo ruolo nel caricare ed eseguire il codice contenuto nelle DLL.
Le DLL Windows sono librerie condivise che contengono codice e dati: possono essere utilizzate da più programmi contemporaneamente per attivare specifiche funzionalità. Le DLL sono progettate per promuovere la modularità e la riutilizzabilità del codice consentendo a diverse applicazioni di condividere codice comune senza doverlo duplicare in ogni programma. Per rendersene conto, è possibile verificare quanti file DLL sono contenuti nella cartella di sistema di Windows (di solito \windows\system32
).
A dispetto del suo nome, Rundll32 – che è un file eseguibile memorizzato, esso stesso, nella cartella di sistema di Windows con il nome rundll32.exe
– può essere utilizzato per caricare sia DLL a 32 bit che DLL a 64 bit. In realtà esistono due versioni di rundll32 su un sistema Windows a 64 bit: una all’interno della directory system32
e un’altra in SysWOW64
: gli utenti non sono comunque interessati a conoscere l’esistenza di queste due versioni; si aspettano semplicemente che le librerie necessarie per il funzionamento di un programma vengano correttamente caricate (e le funzioni che contengono eseguite al bisogno).
Rundll32 utilizza troppa CPU e memoria RAM
L’eseguibile Rundll32 sembra non avere un’ottima fama: basta cercare sul Web per rendersi conto di quanti utenti segnalino problemi ad esso ascrivibili. Tra le lamentele più ricorrenti, ci sono l’elevata occupazione della CPU da parte di Rundll32 o un consumo eccessivo della memoria RAM disponibile sul sistema in uso. Per accorgersene basta aprire il Task manager (si può farlo rapidamente utilizzando la combinazione di tasti CTRL+MAIUSC+ESC
), cliccare sulla scheda Dettagli quindi sull’intestazione della colonna CPU fintanto che la freccia non punta verso il basso. Se il processo Rundll32.exe è ai primi posti, significa che sta impegnando in maniera significativa il processore sottraendo risorse preziose al sistema operativo e alle applicazioni in esecuzione.
Il fatto che Rundll32, ad esempio, occupi stabilmente oltre il 20-25% del processore è già indizio di un problema che si riverbera sulle prestazioni complessive del computer: esso risulta più lento, meno scattante, tende a scaldare, le ventole per la dissipazione del calore restano attive e così via.
A dispetto del nome, che richiama alla mente tempi passati e la corsa 8, 16, 32, 64 bit, Rundll32 è attivamente utilizzato anche nelle versioni più recenti di Windows e sono molteplici le applicazioni che ne fanno uso per il caricamento delle DLL.
Lo spunto per scrivere questo articolo ci è arrivato da un lettore che lamentava un sistema Windows 11 costantemente ingessato senza comprendere il motivo del problema. Esaminando il contenuto della scheda Dettagli del Task manager, infatti, a occupare prepotentemente il processore era proprio il processo Rundll32 ma non risultava possibile risalire al responsabile.
Abbiamo suggerito di scaricare e avviare l’utilità gratuita Process Explorer, già sviluppata da Mark Russinovich prima che entrasse nelle fila di Microsoft (e oggi aggiornata dallo stesso ingegnere software diventato poi CTO di Azure). Con un doppio clic sul file procexp64.exe
è possibile avviare Process Explorer sui sistemi Windows a 64 bit ma è comunque indispensabile assegnare al programma i diritti amministrativi. Per farlo in modo rapido, basta fare clic sul menu File quindi su Show Details for All Processes: rispondendo Sì alla richiesta UAC, e cliccando con il tasto destro sull’istanza di Rundll32.exe che sta occupando in maniera anomala le risorse disponibili sul sistema locale quindi scegliendo Proprietà, ci si trova dinanzi a una schermata simile a quella in figura.
Il suggerimento è di verificare il contenuto del campo Command line: diversamente da quanto possibile con il Task manager di Windows, qui è possibile accertare il comando esatto che è stato utilizzato per invocare Rundll32. Quanto riportato a destra di rundll32.exe
solitamente dovrebbe fornire un indizio inequivocabile sul software e sulla DLL che stanno causando problemi.
Ciò che bisogna fare non è “uccidere” Rundll32, che è un componente di sistema legittimo, ma capire quale applicazione lo sta utilizzando in maniera scorretta. L’applicazione in questione potrebbe essere caricata all’avvio di Windows, avviata mediante l’Utilità di pianificazione oppure eseguita manualmente dall’utente o attraverso un altro programma.
In un altro articolo abbiamo visto i vari strumenti che possono essere utilizzati per eseguire automaticamente un programma all’avvio di Windows.
Nella maggior parte dei casi, per risolvere il problema con Rundll32, è possibile rimuovere l’applicazione che utilizza la libreria DLL indicata nel campo Command line oppure aggiornare il programma a una versione più recente.
Rundll32 viene caricato all’avvio o non risponde
Il fatto che Rundll32 venga eseguito all’avvio di Windows non rappresenta di per sé un problema: accade spesso che alcune applicazioni installate configurino il caricamento di qualche libreria DLL al momento del caricamento del desktop, subito dopo il login. Ciò diventa un problema se Rundll32 evidenzia il comportamento anomalo descritto al punto precedente oppure viene visualizzato un messaggio di errore con l’indicazione che non risponde.
Utilizzando uno strumento software come Autoruns, è possibile accertare le applicazioni in esecuzione automatica ovvero quelle caricate all’avvio di Windows e individuare eventuali occorrenze di Rundll32 create da programmi via via caricati sul sistema. Per rendere la ricerca più semplice, basta digitare rundll32 nella casella Filter di Autoruns (è posta nella parte superiore dell’interfaccia).
Rundll32.exe,
inoltre, essendo un eseguibile dotato della firma digitale Microsoft, viene spesso utilizzato dai criminali informatici come proxy per eseguire codice malevolo. Come spiegano splendidamente i ricercatori di Cybereason, Rundll32 ha storicamente potuto beneficiare di una certa “liberta d’azione”: l’eseguibile può quindi essere sfruttato per superare alcune funzionalità di protezione come AppLocker e Software Restriction Policies (SRP) oltre che per effettuare il dump delle credenziali in memoria, gestite dal processo LSASS (Local Security Authority Subsystem Service).