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