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:
- Multitarget : REC puo' decompilare programmi eseguibili su 386, 68k, PowerPC e MIPS R3000.
- Multiformato : REC riconosce i seguenti formati file :
- ELF (System V Rel. 4, e.g. Linux, Solaris etc.)
- COFF (System V Rel. 3.x, e.g. SCO)
- PE (Win32 .EXE e .DLL per Microsoft Windows 95 e NT)
- AOUT (usato nei sistemi di derivazione BSD , come SunOS 4.x)
- Playstation PS-X (solo MIPS)
- File binari non strutturati (tramite un file .cmd)
- Multihost : REC e' disponibile per Linux 3.0 (i386), Windows 95 e SunOS 4.1.4.
- Riconosce le informazioni simboliche di COFF, ELF+STAB, AOUT+STAB.
- Interfaccia utente scalabile: dalla modalita' automatica, alla modalita' interattiva a pieno schermo.
- La modalita' server HTTP permette di usare un browser HTML come interfaccia utente.
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.
- "Compilers - Principles, Techniques and Tools", Aho, Sethi, Ullman, 1986 Addison-Wesley Publishing Co. ISBN 0-201-10088-6.
- "Advanced Compiler Design & Implementation", Steven Muchnick, 1997 Morgan Kaufmann Publishers, ISBN 1-55860-320-4.
- "How debuggers work - Algorithms, Data Structures, and Architecture", Jonathan Rosemberg, 1996 John Wiley and Sons, ISBN 0-471-14966-7.
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:
- 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 © 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 |