REC - Reverse Engineering Compiler (also available in english)

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

Legge un file eseguibile, e cerca di produrre una rappresentazione in linguaggio C del codice e dei dati usati per costruire il file eseguibile.

E' portabile perche' e' stato progettato per leggere files prodotti per molti processori, e perche' e' stato compilato su vari sistemi host.

Eletto Sito del mese sulla decompilazione - Luglio 1998


Indice

Ultimo aggiornamento: 15 Novembre 1998
Caratteristiche:
Pagina di downloading
Esempi
Manuale d'uso
Guide all'uso
Setup come Server HTTP
  Caratteristiche
Queste sono alcune delle caratteristiche di REC:
I sorgenti di REC non sono di publico dominio. I disassemblatori sono disponibili sul sito GNU.

Sebbene REC puo' leggere file eseguibili Win32 (anche conosciuti come file PE) prodotti da Visual C++ o Visual Basic 5, ci sono limitazioni nei file prodotti. REC cerca di usare tutte le informazioni presenti nel file .EXE. Se il file .EXE e' stato compilato senza informazioni simboliche, se e' stato usato un file .PDB o CodeView (C7), o se sono state usate le opzioni di ottimizzazione del compilatore, il file prodotto non sara' di buona qualita'. Inoltre, file eseguibili Visual Basic 5 sono un misto di codice di Subroutine e dati di Form. E' quasi impossibile per REC decidere cos'e' codice e cos'e' dati. L'unica possibilita' e' di usare un file .cmd e specificare manualmente il tipo di ciascuna area.

In pratica, solo file eseguibili C producono file decompilati riutilizzabili.

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 codice di alta qualita' e' decompilare eseguibili Linux che sono stati compilati con l'opzione -g, o fornire informazioni aggiuntive tramite le direttive 'symbol:' e 'types:' di un file comandi.

  Riferimenti
Ci sono molti altri decompilatori disponibili da varie sorgenti. La mia pagina sul reverse engineering ha una lista.
Abbastanza sorprendentemente, l'architettura interna di un decompilatore e' molto simile a quella di un compilatore. Esiste una letteratura di alta qualita' che descrive entrambi.
La pagina sulla decompilazione ha link e documentazione relativa ai decompilatori in genere.

La tesi di laurea "Reverse Compilation Techniques" di Cristina Cifuentes' descrive in dettaglio la teoria e l'implementazione del decompilatore dcc per programmi DOS 8086.

La pagina delle ottimizzazioni descrive alcune delle tecniche usate dai compilatori per ottimizzare il codice macchina. La decompilazione di codice ottimizzato e' piu' difficile perche' un decompilatore deve prima "de-ottimizzare" il file eseguibile.

Altri libri fondamentali che ho usato durante lo sviluppo sono:

I disassemblatori usati in REC sono stati presi dalla distribuzione di GDB dal sito GNU. Il resto del codice e' stato scritto da me durante gli scorsi 7 anni. Continuero' a migliorare REC nel mio tempo libero, ma non posso garantire di poter fissare bachi o aggiungere nuove prestazioni, processori, o di poter compilare su nuovi sistemi.

Il sito Wotsit ha link alle specifiche di molti formati di file oggetti, come COFF e ELF.

  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 l'uso dei decompilatori e' legale 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 © 1997 - 2000 Backer Street Software - Tutti i diritti riservati.

Storia:
 
15 Nov. 1998 Versione 1.4: Aggiunta la modalita' browser in modo interattivo, e la generazione di pagine HTML.
30 Lug. 1998
Versione 1.3b: Manutenzione: fissati crash e vari problemi in 68k.
15 Feb. 1998 Versione 1.3: Aggiunto supporto per Motorola 68000 e PowerPC.
7 Dic. 1997 Versione 1.2: fissata la interfaccia utente per PC. Ora REC puo' caricare eseguibili DOS 16 bit. Fissati altri bachi.
26 Ott. 1997 Versione 1.1: aggiunto supporto multi-target (386 + R3000), riconoscimento file ELF e PE, fissati molti bachi.
6 Ott. 1997 Portato su Windows in modalita' console (recr5kpc.zip) e SunOS (recr4ks4.tar.gz)
20 Set. 1997 Creata per rendere disponibile recr4kl.zip.


CG's Home Page Ultimo aggiornamento: 15 Nov. 1998