Original:http://www.backerstreet.com/rec/rec.htm

REC Studio 4 - Reverse Engineering Compiler

REC Studio er en interaktiv dekompiler.

Den leser en Windows, Linux, Mac OS X eller en eksekverbar eksekverbar fil, og forsøker å produsere en C-lignende representasjon av koden og dataene som brukes til å bygge den kjørbare filen. 
Den har blitt designet for å lese filer som er produsert for mange forskjellige mål, og det har blitt samlet på flere vertssystemer.

REC Studio 4 er en fullstendig omskrivning av den opprinnelige REC-dekompilatoren. Den bruker mer kraftige analyseteknikker som delvis enkelt statisk oppgave (SSA), tillater lasting av Mac OS X-filer og støtter 32 og 64 biters binærfiler. 
Selv om den fortsatt er under utvikling , har den nådd et stadium som gjør det mer nyttig enn det gamle Rec Studio 2.

Rec Studio 2 sider er her .

Egenskaper

Som nevnt er Rec Studio 4 fortsatt under utvikling. De fleste mål-uavhengige funksjoner har blitt fullført, for eksempel:

  • Multihost: Rec Studio kjører på Windows XP / Vista / 7, Ubuntu Linux, Mac OS X.
  • Symbolisk informasjonssupport ved hjelp av Dwarf 2 og delvis anerkjennelse av Microsofts PDB- format.
  • C ++ er delvis anerkjent: manglede navn generert av gcc er demangled, så vel som arv beskrevet i dverg2 er æret. C ++ er imidlertid et svært bredt og vanskelig språk, så noen funksjoner som maler vil ikke sannsynligvis bli støttet.
  • Types og funksjon prototype definisjoner kan spesifiseres i tekstfiler. Noen standard Posix- og Windows-APIer leveres allerede i Rec Studio-pakken.
  • Interaktivitet støttes, begrenset til definisjon av seksjoner, etiketter og funksjonsinngangspunkter. Vil trenge å forbedre den for å støtte definisjon av typer og funksjonsparametere i program.

Denne tabellen viser de målspesifikke funksjonene som har blitt implementert så langt:

Trekk

x86 (ia32)

x86_64

MIPS

PowerPC

mc68k

VÆPNE

disassembler

Ferdig

Ferdig

Ferdig

Ferdig

Ferdig

planlagt

PE COFF loader

Ferdig

Ferdig

n / a

n / a

n / a

n / a

ELF-laster

Ferdig

Ferdig

Ferdig

Ferdig

Ferdig

planlagt

COFF loader

Ferdig

n / a

n / a

n / a

Ferdig

n / a

Mac OS X-laster

Ferdig

Ferdig

n / a

planlagt

n / a

planlagt

Dwarf2 symbolsk informasjon

Ferdig

Ferdig

Ferdig

Ferdig

n / a

planlagt

COFF symbolsk informasjon

planlagt

n / a

n / a

n / a

planlagt

n / a

Ringe konvensjoner

I prosess

I prosess

I prosess

planlagt

planlagt

planlagt

32 og 64 biter

I prosess

I prosess

n / a

n / a

n / a

n / a

Flytende punkt

planlagt

planlagt

n / a

n / a

n / a

n / a

Windows Debugger

I prosess

planlagt

n / a

n / a

n / a

n / a

Gdb Debugger

I prosess

I prosess

n / a

n / a

n / a

n / a

REC-kilder er ikke i det offentlige området.

Selv om REC kan lese Win32 kjørbare (aka PE) filer produsert av Visual C ++ eller Visual Basic 5, er det begrensninger på produksjonen som produseres. REC vil prøve å bruke hvilken informasjon som finnes i .EXE symboltabellen. Hvis .EXE-filen ble kompilert uten feilsøkingsinformasjon, hvis et programdatabase-fil (.PDB) eller Codeview (C7) -format ble brukt, eller hvis optimaliseringsalternativet for kompilatoren var aktivert, vil ikke produsert produksjon være veldig bra. Videre er Visual Basic 5 kjørbare filer en blanding av Subroutinekode og Form data. Det er nesten umulig for REC å bestemme hvilken som er hvilken. Det eneste alternativet er å bruke en .cmd-fil og angi manuelt hvilket område som er kode og hvilket område er data.

I praksis produserer kun C-kjørbare filer en meningsfull dekompilert utgang .

 

referanser

Flere andre dekompilere er tilgjengelige fra ulike kilder. Se på min omvendt ingeniørside for en liste.

Snarere overraskende er den interne arkitekturen til en dekompiler meget lik den som en kompilator. Høykvalitetslitteratur finnes for begge. Design Notes- siden har informasjon om problemene som en dekompilerforfatter står overfor når man prøver å dekompilere litt mer komplekse programmer enn enkle enhetstester. 
Dekompileringssiden har lenker og dokumentasjon relatert til dekompilere generelt.

Mike van Emmeriks doktorgradsavhandling utviklet seg betydelig innen dekompilering ved å skissere løsninger for grunnleggende problemer i dekompilering av binære programmer.

Cristina Cifuentes 'Reverse Compilation Techniques PhD oppgave beskriver i detalj teorien og implementeringen av dcc decompiler for 8086 DOS programmer.

Wotsit- siden har lenker til spesifikasjonene til objektfilformater som COFF og ELF.

Noen begreper relatert til kodeanalyse er dekket på Reference Debugger- sidene.

Andre grunnleggende bøker jeg brukte under utviklingen er:

  • "Kompilatorer - prinsipper, teknikker og verktøy", 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.
  • "Hvordan debuggers jobber - Algoritmer, datastrukturer og arkitektur", Jonathan Rosemberg, 1996 John Wiley and Sons, ISBN 0-471-14966-7.

Demonteringene som ble brukt i REC ble tatt fra forskjellige kilder. Filen copyrite i distribusjonen har en liste over kreditter for hver av dem som brukes i REC. Resten av koden ble skrevet av meg selv de siste 25 årene. Jeg vil fortsette å forbedre REC i fritiden, men jeg kan ikke garantere at jeg kan fikse feil eller legge til nye funksjoner, prosessorer eller verter. 

Ansvarsfraskrivelse

Det er mye diskusjon om lovligheten av dekompilering. Decompiler-verktøy har lenge vært tilgjengelig for en rekke plattformer. Dekompilere, sammen med andre verktøy som debuggere, binære redaktører, demontere osv., Bør bare brukes når eieren av et program har lovlig ret til å omforme programmet.

Det har blitt etablert av USA og andre land domstoler at det er lovlig å bruke dekompilere i henhold til rettferdig bruksklausul i lov om opphavsrett.

For å finne ut når det er lovlig å bruke en dekompiler, bør du lese teksten i følgende tilfeller:

Les også en diskusjon om lovligheten ved å bruke en emulator til å kjøre et binært program på en annen vert.

Backer Street Software støtter ikke bruken av omvendte ingeniørverktøy for ulovlige formål.


Copyright © 1997 - 2015 Backer Street Software - Alle rettigheter reservert.

Historie: 

9. mars 2011

Versjon 4.0 Beta: Fullstendig omskrivning av dekompilatoren for å støtte mer moderne arkitekturer (MachO-filer, x86_64).

2. juli 2007

Versjon 2.2: Fast dekompilering av rå binærfiler via .cmd-filer. Delvis implementert register konstant forplantning. Fast mange 68k feil.

6. mai 2007

Versjon 2.1: Lagt tilbake + batch-alternativ til RecStudio; bruk Ndisasm for i386; bedre isolering av importdata for Windows-binære filer

20. september 2005

Versjon 2.0d: Flere feilrettinger for 68k

6. september 2005

Versjon 2.0c: Støtte for Linux .o filer og forbedret støtte for 68k

15. august 2005

Versjon 2.0b: Vedlikeholdsutgivelse. Støtte for Watcom-kompilerte binarier og brede strenge

1. august 2005

Versjon 2.0a: Vedlikeholdsutgivelse. Faste krasjer, forbedret kvalitet med Windows-kjørbare

30. mai 2005

Versjon 2.0: Windows GUI og interaktiv dekompilering

19. september 2000

Versjon 1.6: Lagt til støtte for SPARC.

16. mars 1999

Versjon 1.5d: Gjenopprettet deteksjon av bryteren (). Lagt til støtte for big-endian MIPS.

6. mars 1999

Versjon 1.5: Støtte for import / eksport info i Win95 filer; erstattet GNU disassemblere med freeware kilde; fast mange krasjer

22. november 1998

Versjon 1.4a: Fast endeløs sløyfe når dekompilering av Win95-filer; lagt til Windows-prototypefiler

15. november 1998

Versjon 1.4: Lagt til nettleserfunksjon i interaktiv modus og HTML-sidegenerering

30. juli 1998

Versjon 1.3b: Vedlikehold: faste krasjer og forskjellige problemer i 68k.

15. februar 1998

Versjon 1.3: Lagt til Motorola 68000 og PowerPC mål.

7. desember 1997

Versjon 1.2: Fast PC-brukergrensesnitt. Nå kan vi laste 16 bits DOS-kjørbare. Flere feilrettinger.

26. oktober 1997

Versjon 1.1: Multimålstøtte (386 + R3000), lasting av ELF og PE-filer, flere feilrettede.

6. okt. 1997

Ported til Windows i konsollmodus (recr4kpc.zip) og til SunOS (recr4ks4.tar.gz)

20. september 1997

Opprettet for å lage recr4kl.zip tilgjengelig.