Des vêtements, des chaussures, des soldes, ... et des guides mode et beauté !

REC Studio 4 – Reverse Engineering Compiler

Leggere un file eseguibile Windows, Linux, Mac OS X o raw, e cerca di produrre una rappresentazione stile C del codice e dei dati utilizzati per costruire il file eseguibile. È stato progettato per leggere i file prodotti per molti obiettivi differenti, ed è stato compilato su diversi sistemi host.
REC Studio 4 è una riscrittura completa dell’originale decompilatore REC. Utilizza tecniche di analisi più potenti come una parziale Single Static Assignment (SSA), permettendo di caricare file Mac OS X e supporta binaria 32 e 64 bit.
Anche se ancora in fase di sviluppo, ha raggiunto un livello tale da renderlo più utile rispetto al vecchio Rec Studio 2.
Le pagine di Rec Studio 2 sono qui.

Caratteristiche

Come menzionato, Rec Studio 4 è ancora in fase di sviluppo. La maggior parte delle funzionalità indipendenti obiettivo sono state completate, come:
• Multihost: Rec Studio gira su Windows XP/Vista/7, Ubuntu Linux, Mac OS X.
• Supporto informazioni simboliche usando Dwarf 2 e riconoscimento parziale del formato Microsoft PDB.
• C++ viene riconosciuto parzialmente: i nomi mangled generati da gcc vengono sottoposti a demangling, oltre a venire onorata l’eredità descritta in in dwarf2. Tuttavia, C++ è un linguaggio molto più difficile, quindi alcune funzionalità come i template probabilmente non saranno mai supportate.
• Tipi e definizione di prototipo funzione possono essere specificate in file di testo. Alcuni Posix e Windows APIs standard sono già forniti nel pacchetto Rec Studio.
• L’interattività è supportata, limitata alle definizione di sezioni, etichette e punti di entrata funzione. C’è bisogno di migliorare per supportare la definizione nel programma di tipi e parametri funzione.
Questa tabella mostra le funzionalità specifiche per target che sono state implementate finora:

Funzionalità    x86(ia32)        x86_64        Mips        PowerPC        mc68k         ARM    
DisassemblerFattoFattoFattoFattoFattoPrevisto
PE COFF loaderFattoFatton/an/an/an/a
ELF loaderFattoFattoFattoFattoFattoPrevisto
COFF loaderFatton/an/an/aFatton/a
Mac OS X loaderFattoFatton/aPreviston/aPrevisto
Dwarf2 symbolic informationFattoFattoFattoFatton/aPrevisto
COFF symbolic informationPreviston/an/an/aPreviston/a
Calling conventionsIn corsoIn corsoIn corsoPrevistoPrevistoPrevisto
32 and 64 bitsIn corsoIn corson/an/an/an/a
Floating-pointPrevistoPreviston/an/an/an/a
Windows DebuggerIn corsoPreviston/an/an/an/a
Gdb DebuggerIn corsoIn corson/an/an/an/a

 

Le fonti REC non sono nel dominio pubblico.
Anche se REC può leggere eseguibili Win32 (aka PE) file prodotti Visual C++ o Visual Basic 5, ci sono dei limiti all’output prodotto. REC cercherà di usare qualsiasi informazione sia presente nella tabella simboli.EXE. Se il file.EXE file è stato compilato senza informazioni di debugging, se è stato impiegato in formato file database di un programma (.PDB) o Codeview (C7), o se era attivata l’opzione di ottimizzazione del compilatore, l’output prodotto non sarà molto buono. Inoltre, i file eseguibili Visual Basic 5 sono un mix di codice di Subroutine e dati Form. È quasi impossibile per REC determinarli e distinguerli. L’unica opzione è di usare un file.cmd e specificare manualmente quale area e codice e quale area dati.
In pratica, solo i file eseguibili C producono un output decompilato significativo.

Fonti

Sono disponibili diversi altri decompilatori da varie fonti. Date un’occhiata alla mia pagina di ingegneria inversa per trovare una lista.
In maniera piuttosto sorprendente, architettura interna di un decompilatore è molto simile a quella di un compilatore. Esiste letteratura di alta qualità per entrambi. La pagina Design Notes contiene informazioni sui problemi che uno scrittore di decompilatore deve affrontare quando cerca di decompilare programmi leggermente più complesse rispetto a semplici test di unità.
La pagina decompilazione presenta dei link e della documentazione relativa ai decompilatori in generale.
La testi PhD di Mike van Emmerik si addentra significativamente nel campo della decompilazione delineando delle soluzioni a problemi fondamentali per la decompilazione di programmi binari.
La Tesi PhD su tecniche di compilazione inversa di Cristina Cifuentes descrive nel dettaglio la teoria e l’implementazione del decompilatore dcc per programmi 8086 DOS.
La pagina Wotsit presenta dei link verso le specifiche di formati file oggetto come COFF e ELF.
Alcuni concetti relativi all’analisi di codice vengono coperti nelle pagine REference Debugger.
Altri libri fondamentali che ho usato durante lo sviluppo sono:
• "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.
I disassemblatori usati in REC sono stati presi da varie fonti. Il file copyrite nella distribuzione presenta una lista di crediti per ciascuno dei disassemblatori usati in REC. Il resto del codice è stato scritto da me stesso nel corso degli ultimi 25 anni. Continuerò a migliorare REC nel mio tempo libero, ma non posso garantire di riuscire a risolvere bugs o aggiungere nuove funzionalità, processori o host.

Disclaimer
ci sono tante discussioni sulla legalità della decompilazione. Gli strumenti decompilatori sono disponibili per una varietà di piattaforme, da molto tempo. I decompilatori, assieme ad altri strumenti come debugger, binary editor, disassemblatori ecc. Dovrebbero essere usati solo quando il proprietario di un programma ha il diritto legale ad effettuare ingegneria inversa sul programma.
È stato stabilito dagli Stati Uniti e dai tribunali di altri paesi che è legale utilizzare una decompilatore nel rispetto della clausola fair use della legge sul copyright.
Per scoprire quando è legale usare un decompilatore, dovreste leggere il testo dei seguenti casi:
Sega Enterprises LTD v. Accolade, Inc.
• Atari Games Corp. v. Nintendo of America, Inc.
Leggete inoltre una discussione sulla legalità dell’uso di un emulatore per eseguire un programma binario su uno host differente.
Backer Street Software non supporta l’utilizzo di strumenti di ingegneria inversa per scopi illegali.
________________________________________
Copyright © 1997 - 2015 Backer Street Software - Tutti i diritti riservati.
History:

9 Marzo 2011 Versione 4.0 Beta: Riscrittura completa del decompilatore per supportare architetture più moderne (MachO files, x86_64).
2 Lug 2007 Versione 2.2: Risolta decompilazione di binari raw tramite file.cmd. Parziale implementazione di propagazione costante registro. Risolti molti errori 68k.
6 Mag 2007 Versione 2.1: Aggiunta opzione back +a RecStudio; uso Ndisasm per i386; miglior esalazione di dati importati per binari Windows
20 Set. 2005 Versione 2.0d:Ulteriore risoluzione bug per 68k
6 Set. 2005 Versione 2.0c: Supporto per file Linux .o e supporto migliorato per 68k
15 Ago. 2005 Versione 2.0b: Release di manutenzione. Supporto per binari compilati Watcom e wide strings
1 Ago. 2005 Versione 2.0a: Release di manutenzione. Risolti crashes, miglioramento qualità con eseguibili Windows
30 Mag 2005 Versione 2.0: Windows GUI e decompilazione interattiva
19 Set. 2000 Versione 1.6: Aggiunto supporto per SPARC.
16 Mar. 1999 Versione 1.5d: Rpristinata rilevazione di switch(). Aggiunto supporto per big-endian MIPS.
6 Mar. 1999 Versione 1.5: Supporto per import/export info in file Win95; sostituiti disassemblatori GNU con fonte freeware; risolti molti crash
22 Nov. 1998 Versione 1.4a: Risolto endless loop durante decompilazione file Win95; aggiunti file Windows prototype
15 Nov. 1998 Versione 1.4: Aggiunta capacità browser in modalità interattiva, e generazione pagine HTML
30 Lug. 1998 Versione 1.3b: Manutenzione: risolti crash vari problemi in in 68k.
15 Feb. 1998 Versione 1.3: Aggiunti target Motorola 68000 e PowerPC.
7 Dic. 1997 Versione 1.2: Sistemata interfaccia utente bici. Ora è possibile caricare eseguibili 16 bits DOS. Ulteriore risoluzione bug.
26 Ott. 1997 Versione 1.1:Supporto multi-target (386 + R3000), caricamento di file ELF e PE, diverse risoluzioni bug.
6 Ott. 1997 Porting Windows in modalità console (recr4kpc.zip) e in SunOS (recr4ks4.tar.gz)
20 Set. 1997 Creato per rendere disponibile recr4kl.zip.
________________________________________
CG Home Page

Ultimo aggiornamento: 22 novembre 2015