Reverse Engineering Compiler - Pagina Principale

(versione italiana) - (Also available in English)

Ritorno a CG's Home Page | Guida Utente | Esempio d'uso | E-mail : caprino@netcom.com Aggiornata il : 10 Mag. 1998

REC e' un compilatore portabile per reverse engineering, o decompilatore.

Puo' leggere un file eseguibile, e cerca di produrre una rappresentazione C del codice e dei dati usati per creare il file eseguibile.

E' portabile poiche' e' stato progettato per leggere file prodotti per diversi tipi di processori, ed e' stato compilato su vari tipi di sistemi.

Come Scaricare REC

Supporto per piu' di un processore e' stato esteso nella versione 1.3. Ora REC accetta file compilati per i processori mc68000 e PowerPC.

La seguente tabella mostra i file oggetto e i tipi di processori accettati da REC:

Sistemi host
(click sul link per scaricare)
Pocessori accettati
uno qualunque dei seguenti:
Formati Oggetti accettati
uno qualunque dei seguenti:

Linux 3.0 (i386):
rec13lnx.zip (125k)
rec13lnx.tar.gz (122k)

Intel 386 (32bit indirizzamento lineare
supporto limitato per il modo 16 bit
segmentato
Unix SVR4 ELF con informazioni
simboliche STABs prodotte dal
compilatore GNU gcc
Windows 95 (solo modo testo)

rec13pc.zip (151k)
Motorola 68000 (nuovo!) Unix SVR3 COFF e
Windows PE COFF esteso (.EXE)
SunOS 4.1.4
rec13s4.tar.gz (154k)
Motorola PowerPC (nuovo!) Linux e SunOS AOUT con STABs
  MIPS R3000 PlayStation PS-X files (solo MIPS)
    File dati non strutturati (via file .cmd)

I sorgenti di REC non sono disponibili. I disassemblatori sono disponibili da GNU.

Sebbene REC possa leggere file eseguibili Windows (conosciuti anche con il nome di file PE), quali prodotti da Visual C++ o Visual Basic 5, ci sono molte limitazioni nei file prodotti. REC cerca di usare tutte le informazioni presenti nella symbol table dei file .EXE. Se il file .EXE e' stato compilato senza informazioni simboliche, o se e' stato usato un file PDB (program data base) o il formato Codeview (C7), o se e' stata abilitata l'opzione di ottimizzazione del compilatore, i file prodotti non saranno molto significativi. Inoltre, i file eseguibili Visual Basic 5, sono un misto di codice di Subroutine e di dati Form. E' quasi impossibile per REC decidere cosa e' codice e cosa e' dati. L'unica opzione e' usare un file .cmd e specificare manualmente quale area e' codice e quale e' dati.

In pratica, solo file eseguibili C producono risultati accettabili.

Prima o poi scrivero' un lettore di informazioni simboliche .PDB o Codeview, e un decompilatore di risorse Windows. Fino a quel momento, l'unica possibilita' di ottenere file di uscita di alta qualita' e' decompilare file eseguibili Linux originariamente compilati con l'opzione -g, o fornire informazioni simboliche aggiuntive tramite le direttive 'symbol:' e 'types:' in un file .cmd.

Un file eseguibile Linux (con il sorgente originale) e' incluso nei file zip/tar. Basta fornire tale file a REC per vedere l'alta qualita' dei file prodotti quando si forniscono sufficienti informazioni simboliche.

Guida Utente

La pagina della guida utente descrive come eseguire REC e quali opzioni usare per modificare i file di uscita.

E' anche disponibile una descrizione passo-passo di come iniziare a usare REC.

Il modo interattivo e' abbastanza primitivo, e non sfrutta molte delle possibilita' fornite dal sistema operativo. L'interfaccia utente e' stata progettata per essere il piu' portabile possibile, e percio' non usa caratteristiche specifiche come colori, aggiornamenti ottimizzati dello schermo ecc. E' possibile che talvolta caratteri spurii siano presenti sullo schermo. In tal caso, di solito il tasto ESC fa' uscire dal modo operativo corrente. In molti schermi il cursore puo' essere spostato usando i comandi dell'editor UNIX VI: 'j' una linea in basso, 'k' una linea in alto, 'l' un carattere a destra, 'h' un carattere a sinistra, Ctrl-F una pagina in avanti, Ctrl-B una pagina indietro, '/' per cercare una stringa in avanti, '?' per cercare indietro.

Prima o poi aggiungero' una interfaccia utente stile Windows, sebbene non sia nelle mie priorita'.

Riferimenti

Molti altri decompilatori sono disponibili da fonti diverse. La mia pagina sul reverse engineering contiene una lista.

Sebbene REC implementi molte delle idee descritte nella letteratura, specialmente nella tesi "Reverse Compilation Techniques" di Cristina Cifuente, tutto il codice e' stato originariamente scritto da me negli ultimi 6 anni, eccetto i disassemblatori, che sono stati presi dalla distribuzione ufficiale di GDB di GNU. In futuro continuero' a migliorare REC nel mio tempo libero, ma non posso garantire che potro' fissare bachi o aggiungere prestazioni o nuovi processori.

Molti degli algoritmi provengono dal testo "Compilers - principles, techniques, and tools", di Aho, Sethi, Ullman.

Disclaimer

Ci sono molte discussioni sul fatto se sia legale decompilare un programma. Strumenti di decompilazione sono sempre stati disponibili per varie piattaforme. I decompilatori, cosi' come altri strumenti come debugger, editor binari, disassemblatori ecc. devono essere usati solo quando il possessore di un programma ha il diritto legale di applicare il reverse engineering sul programma.

E' stato stabilito dalle corti degli Stati Uniti d'America e di altri stati che e' legale usare decompilatori in base alla clausola del 'fair use' della legge sul copyright

Per sapere quando e' legale usare un decompilatore, l'utente deve leggere il testo dei seguenti casi:

Backer Street Software non supporta l'uso illegale dei decompilatori.


Copyright (C) 1997 - 1998 Backer Street Software - Tutti i diritti riservati.

Storia:

15 Feb. 1998 Versione 1.3: Aggiunti i processori Motorola 68000 e PowerPC.
7 Dic. 1997 Versione 1.2: fissata l'interfaccia utente per PC. Ora e' possibile leggere eseguibili DOS 16 bit. Fissati altri bachi.
26 Ott. 1997 Versione 1.1: aggiunto supporto per processori diversi (386 + R3000), lettura di file ELF e PE, fissati molti bachi.
6 Ott. 1997 Portato su Windows in modalita' console (recr4kpc.zip) e su SunOS (recr4ks4.tar.gz)
20 Set. 1997 Creato per descrivere la versione 1.0 (recr4kl.zip).

Ritorno a CG's Home Page | Guida Utente | Esempio d'uso | E-mail : caprino@netcom.com Aggiornata il : 10 Mag. 1998