PE Explorer

English English  Deutsch Deutsch  Français Français  Italiano Italiano

Tra i prodotti che ho provato (editor, visualiz- zatori di librerie DLL, editor esadecimale, disassembla- tori, ecc.) è uno dei migliori perché senza lunghi studi e con un po’ di abilità e pazienza si è in grado di capire il modo in cui un programma funziona (e per me questa è la cosa più importante.

Xavier B.


Altre testimonianze
di PE Explorer

PE Explorer Disassemblatore

Il disassemblatore di PE Explorer è progettato per essere facile da usare rispetto ad altri disassemblatori. A tal fine, alcune delle funzionalità presenti in altri prodotti sono state omesse al fine di mantenere il processo semplice, veloce e facile da utilizzare.

Il disassemblatore (Ctrl + MTools | Disassembler) si apre in una propria finestra e si sovrappone all'interfaccia principale, che può essere richiamata in qualsiasi momento.

Il disassemblatore presume che potrebbe essere necessaria qualche modifica manuale del codice riprodotto. Per agevolare l'aggiunta di codice a mano, il disassemblatore utilizza un algoritmo qualitativo progettato per ricostruire il codice sorgente in linguaggio assembly dei file di destinazione con il massimo livello di precisione possibile. Pur essendo potente come i disassemblatori dedicati più costosi, PE Explorer si concentra sull'usabilità, chiarezza e navigazione. Abbiamo creato un buon disassemblatore a un prezzo ragionevole. Ti permetterà di risparmiare ore di tempo ed è facile da utilizzare!

Il Disassemblatore apre una seconda finestra. Prima del processo di disassemblaggio, la finestra delle Opzioni visualizza le seguenti opzioni:

Finestra Opzioni

Le opzioni del disassemblatore (View | Disassembler Options) forniscono un elenco di set di istruzioni da disassemblare. L'opzione Auto Rescan selezionata e il valore di Auto Rescan Count sono impostati di default e sono adeguati, ma per binari complicati, potrebbe essere necessario aumentare il numero di passaggi. Il numero di opcode visualizzati può essere impostato su un valore predefinito.

Una volta premuto Start Now, il processo di disassemblaggio inizia identificando il compilatore utilizzato per creare il file di destinazione. La conoscenza preventiva di come un compilatore assembla i file migliora il lavoro di indovinare i pattern di allocazione dei dati all'interno del file di destinazione. Inoltre, con queste informazioni, è possibile identificare la maggior parte degli oggetti, delle procedure, delle variabili, dei tipi del file di destinazione con un elevato grado di precisione.

Attualmente, solo diversi compilatori Borland vengono identificati. Il disassemblatore decompilerà anche file creati con altri compilatori. Tuttavia, al momento, mostrerà solo gli elementi interni specificamente identificati per i file compilati con compilatori Borland/Embarcadero.

Durante il processo di disassemblaggio, la finestra Processing Info visualizza le seguenti informazioni:

Finestra Processing Info

Il disassemblaggio di file di dimensioni superiori a 1 Mb può richiedere diversi minuti a seconda delle capacità del tuo sistema. Generalmente, ogni byte di un file di destinazione richiede 40 byte di memoria per il processo. Ad esempio, un file di 1 Mb richiederebbe 40 Mb di memoria per il processo, un file di 2 Mb richiederebbe 80 Mb e così via.

La finestra del Disassemblatore appare quando il processo di disassemblaggio è completato. La visualizzazione principale del disassemblaggio si trova nella sezione in alto a sinistra. Puoi regolare gli spazi tra ciascuna linea di assembly (usando i tasti 'Ins' e 'Del') e il numero di opcode visualizzati per linea (usando i tasti 'Shift + Ins' e 'Shift + Del').

la finestra principale di Disassembler

Una volta completato l'intero processo, il disassemblatore mostra il codice sorgente risultante per il file di destinazione. Questo output può essere modificato manualmente o salvato su disco per riferimenti futuri.

La navigazione è molto semplice. Per spostarti agli indirizzi di ramificazione, seleziona la riga corrispondente e premi 'Invio'. Per le istruzioni con un secondo indirizzo di destinazione dell'operando, premi 'Ctrl + Invio'. Per tornare indietro a un indirizzo precedente, usa il tasto 'Esc'. Per visitare un indirizzo specifico, premi 'Ctrl + G' e inserisci l'indirizzo nel formato esadecimale.

Per elencare le subroutine che potrebbero avere riferimenti, seleziona l'indirizzo di inizio della procedura e premi 'R' o accedi a "Search | References". Una finestra popup mostrerà l'elenco degli indirizzi referenziati, che puoi esaminare facendo doppio clic su ciascun indirizzo nella lista. Questa funzione aiuta a esplorare ed analizzare efficientemente i riferimenti alle subroutine nel codice disassemblato.

La lista dei nomi a destra fornisce un elenco di indirizzi etichettati (compresi i punti di destinazione per salti condizionali e incondizionali, prologhi di funzioni, dati denominati e riferimenti a stringhe) fatti dal disassemblatore, con il punto di ingresso chiaramente indicato. Le etichette possono essere rinominate premendo 'N' (Edit | Rename Label).

Le schede "View 1", "View 2", "View 3" e "View 4" (accessibili con F6, F7, F8 e F9, rispettivamente) nell'angolo in basso a sinistra forniscono visualizzazioni persistenti del disassemblaggio che sono indipendenti dalla visualizzazione principale e possono essere scambiate a piacere.

Nella scheda "Strings", puoi trovare una raccolta di stringhe rilevate. Hai la possibilità di manipolare il rilevamento delle stringhe utilizzando la barra degli strumenti o le voci di menu. Ad esempio, puoi contrassegnare le stringhe come "String", "Pascal String", "Long Pascal String" o "Unicode" facendo clic sulle opzioni corrispondenti nella barra degli strumenti o premendo rispettivamente 'S', 'A', 'L' o 'U'. Queste funzioni offrono potenti strumenti per gestire ed analizzare efficacemente le stringhe all'interno del codice disassemblato.

Ricerca attraverso le stringhe all'interno di un file eseguibile potrebbe fornire suggerimenti sulla funzionalità di un programma. Con PE Explorer, puoi estrarre le stringhe presenti nel programma, come messaggi o connessioni URL, ecc. Quando cerchi indizi sotto forma di testo, l'output delle stringhe trovate nell'eseguibile può fornirti una buona comprensione di alcune delle funzioni e subroutine chiamate da questo binario.

Il codice può essere contrassegnato manualmente nella lista di assembly premendo 'C'. Le parole doppie (Dword) e gli offset possono essere contrassegnati premendo rispettivamente 'D' e 'O'.

Per aggiungere commenti, premi ';'. Ciò ti consente di includere note esplicative o annotazioni all'interno del codice disassemblato per riferimenti futuri o per la collaborazione con altre persone.

La scheda "Unprocessed Data" visualizza alcuni blocchi di dati che non hanno un riferimento a una procedura.

Sebbene la modellazione personalizzata eseguita dal Disassembler aumenti i tempi di elaborazione, il risultato è una drastica riduzione delle traduzioni errate del codice operativo. Pensiamo che sarete d'accordo sul fatto che il tempo extra necessario per raggiungere questo alto livello di precisione è giustamente compensato dal tempo risparmiato durante la correzione manuale dell'output.

Limitazioni note

Al momento, le funzionalità dell'implementazione del disassemblaggio non consentono di produrre codice sorgente che potrebbe essere ricompilato così com'è. Le sezioni dei file in cui la dimensione fisica è uguale a 0 e i dati si trovano al di fuori dei limiti della dimensione fisica della sezione non possono essere tradotte con precisione. Il disassemblatore contrassegna questi elementi come [DB Count DUP (??)] e non inserisce etichette all'interno di queste aree. Queste tipologie di sezioni si verificano perché spesso i programmatori richiedono memoria e poi non la gestiscono correttamente, affidandosi interamente al sistema operativo o al compilatore per rilasciare le risorse di memoria. Ad esempio (in Pascal):

Var MyData: Array [WORD] of Byte;

In questo caso, lo spazio per memorizzare la variabile "MyData" non verrà allocato fisicamente nella sezione dei dati, ma la dimensione virtuale della sezione dei dati che la contiene verrà incrementata di un valore WORD. Inoltre, accade che le variabili dichiarate in questo modo comportino la perdita di megabyte di spazio virtuale per la sezione dei dati contenente esse.

Attualmente, a causa delle caratteristiche delle strutture dati interne in PE Explorer e per le ragioni citate sopra, le allocazioni di memoria mal gestite sono escluse dal disassemblaggio. In caso contrario, la spesa di memoria necessaria per elaborare i file di destinazione potrebbe crescere in modo astronomo. Attualmente, ogni byte di dati in ingresso richiede da 30 a 40 byte di memoria per essere elaborato.

< indietro | avanti >

 


Inizia la prova gratuita di 30 giorni

Scarica PE Explorer e inizia subito a esplorare le tue applicazioni.

Download PE Explore PE Explorer funziona su tutte le versioni di Windows, da Windows 95 all'ultima versione di Windows 11.