| 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): |
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:
- Sega Enterprises LTD v. Accolade, Inc.
- Atari Games Corp. v. Nintendo of America, Inc.
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 |