
DLest è un’applicazione freeware utilizzabile per individuare le funzioni esportate nei file PE (Portable Executable), in particolare in file DLL. Con DLest è facile enumerare le funzioni utilizzando una varietà di metodi, tra cui il trascinamento della selezione, l’apertura di una cartella o la scansione ricorsiva di un folder sfruttando i filtri delle espressioni regolari, ad esempio per includere solo i PE con specifici nomi di funzioni di esportazione.
Oltre alla possibilità di analizzare file PE archiviati su disco, DLest consente anche l’analisi dei moduli caricati in memoria nonché la manipolazione in tempo reale delle funzioni esportate, rendendolo uno strumento prezioso per attività di Reverse engineering o durante le fasi di Incident Response. Puoi persino eseguire il dump di una versione ricostruita di qualsiasi modulo per future analisi o riutilizzi di vario tipo.
Essendo un tool multithreading, garantisce un’elaborazione tempestiva anche in presenza di un gran numero di file PE. Che tu sia un programmatore che sta cercando di individuare e/o manipolare le funzioni esportate, piuttosto che un malware analyst che necessita di uno strumento affidabile per le attività di ogni giorno, DLest può costituire una preziosa risorsa FOSS da inserire nella tua cassetta degli attrezzi.
Tra le caratteristiche che trovo degne di nota:
- supporta file eseguibili sia per ambienti x86-32 (PE) che x86-64 (PE+)
- caricamento dei file tramite Drag and Drop (supporta l’UAC)
- caricamento dalla finestra di dialogo aperta
- caricamento di file dall’intera cartella
- possibilità di cercare file PE attraverso controlli avanzati (scansione in profondità, ricorsiva e filtraggio delle funzioni di esportazione tramite regex)
- scansiona e analizza i moduli mappati in memoria dal processo in esecuzione
- possibilità di effettuare una ricerca contestuale integrata tramite Google

DLest consente di utilizzare la finestra di dialogo predefinita di Microsoft Windows per selezionare uno o più file PE (Portable Executable) da analizzare: apparirà una finestra di dialogo standard che ti permetterà di navigare nel computer target, e selezionare i file PE che desideri caricare.
Dopo che avrai selezionato i file di tuo interesse, verranno sottoposti a un processo di filtraggio per garantire che siano file PE validi, ossia di un’architettura compatibile con la versione DLest che hai installato. Questo processo garantisce che in DLest vengano caricati solo file compatibili. Utilizzando la modalità file aperto, puoi facilmente caricare e analizzare i singoli file PE secondo le tue necessità, sia per scopi di sviluppo che di analisi di malware: che tu abbia bisogno di esaminare un singolo file piuttosto che un corposo elenco, la modalità file aperto in DLest ti consente di farlo comodamente.

La modalità “open folder” scansiona rapidamente una singola directory consentendo di identificare tutti i file Portable Executable (PE) validi al suo interno, in particolare file DLL, utilizzando lo stesso filtraggio della modalità “open file”.

La modalità “scan folder” consente di eseguire la scansione completa di un albero di directory, individuando eventuali librerie DLL che offrono funzioni esportate. Questa modalità consente di eseguire la scansione ricorsiva di una cartella e delle sue sottocartelle, alla ricerca di file PE compatibili e validi che offrano funzioni esportate. Una delle caratteristiche principali di questa modalità di scansione è la sua capacità di utilizzare query avanzate di espressioni regolari (regex) per filtrare determinati file in base ai nomi delle loro funzioni esportate. Ciò può essere particolarmente utile se stai cercando funzioni specifiche o se hai bisogno di escludere determinati file dalla scansione. Oltre ai file DLL, la modalità “scan folder” include anche la possibilità di cercare qualsiasi file PE compatibile: ciò lo rende uno strumento versatile per individuare e analizzare le funzioni esportate in una varietà di diversi tipi di file PE. Che tu debba individuare rapidamente le funzioni esportate in una singola cartella piuttosto che eseguire una scansione più avanzata di una struttura di directory più ampia, puoi farlo sfruttando questa modalità di scansione.


Il caricamento dalla modalità Processo in esecuzione di DLest consente di analizzare l’intestazione PE (Portable Executable) per le funzioni esportate direttamente da moduli in memoria, piuttosto che dai file archiviati su disco. Questa funzionalità può giovare a tutti coloro a cui occorre analizzare funzioni esportate in tempo reale o che hanno necessità di lavorare con moduli caricati in memoria che non sono archiviati su disco.
Per utilizzare il caricamento dalla modalità Processo in esecuzione basta selezionare il processo desiderato dall’elenco dei PID in esecuzione sul sistema: DLest analizzerà l’intestazione PE del processo selezionato, identificando eventuali funzioni esportate al suo interno. Particolarmente utile per analizzare e manipolare le funzioni esportate in tempo reale, questa funzionalità consente di accedere direttamente ai moduli in memoria di un processo in esecuzione.
Dump Reconstructed PE Image
Tale funzionalità consente di salvare una copia di qualsiasi modulo mappato in memoria – da un processo di destinazione – in un file per ulteriori analisi o utilizzi.
Per utilizzare questa funzione è necessario selezionare il processo e il modulo desiderati da un elenco di processi attualmente in esecuzione, e i relativi moduli mappati in memoria. DLest creerà quindi una copia del modulo selezionato e lo ricostruirà in un formato che può essere letto da analizzatori PE o altri strumenti.
L’immagine PE ricostruita può essere salvata in un file sul sistema per un uso successivo: ti consentirà di esaminare il modulo in modo più dettagliato, ricostruendone il comportamento e/o riutilizzandolo per test o altri scopi.

La funzionalità di filtraggio delle esportazioni ti consente di utilizzare espressioni regolari per selezionare le sole funzioni esportate in tempo reale che ti interessano.
Per utilizzare questa funzione, inserisci semplicemente un’espressione regolare nel campo designato e fai click sul pulsante applica. DLest filtrerà l’elenco delle funzioni esportate utilizzando la regex, visualizzando solo quelle che corrispondono al modello.
Sebbene questa funzione possa essere molto comoda, vale la pena notare che potrebbe essere più lenta se applicata a un numero molto elevato di funzioni esportate. In tali casi, potrebbe esser necessario più tempo affinché DLest applichi il filtro e aggiorni la visualizzazione, tuttavia, nella maggior parte dei casi la funzione di filtraggio delle esportazioni in tempo reale è rapida ed efficiente, il che la rende uno strumento prezioso per individuare rapidamente funzioni esportate specifiche o escludere quelle indesiderate.

DLest è in grado di loggare eventuali errori o problemi che si verificano durante l’analisi dei file PE (Portable Executable), oppure quando un file di destinazione non contiene funzioni esportate. Ogni qual volta dovesse verificarsi un errore o un problema durante l’analisi di un file PE (ma anche quando un file di destinazione non dovesse contenere funzioni esportate), nella finestra di dialogo Logs verranno tracciati degli avvisi informativi: saranno presenti dettagli sul file in questione, sulla natura dell’errore, come tracce dello stack pertinente nonché altre informazioni diagnostiche.

È una funzionalità che mostra un elenco di file PE (Portable Executable) analizzati dal contesto della scheda corrente, insieme a una varietà di dettagli su ciascun file:
- nome della libreria (così come appare nell’intestazione del file)
- conteggio esportazioni: mostra il numero totale di funzioni esportate per libreria
- la dimensione del file espressa in byte
- hash del file: MD5, SHA1 e SHA256
- attributi del file: ad esempio se è di sola lettura o nascosto.
Dallo stesso autore di DarkComet e SubSeven Legacy, un ottimo FOSS utilizzabile sia per effettuare analisi e approfondimenti in ambito Incident Response nonché in ambito sviluppo software / troubleshooting Windows. Nel momento in cui sto pubblicando questo articolo, puoi scaricare il codice sorgente di DLest da questo link.