REC Studio 4 – Omvänd Teknik ” – Kompilatorn

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

REC Studio är en interaktiv decompiler.

Det läser en Windows, Linux, Mac OS X eller rå körbara filen, och försök att ta fram ett C-liknande representation av kod och data som används för att bygga den körbara filen.
Den har utformats för att läsa filer som produceras för många olika mål, och det har sammanställts på flera mottagande system.

REC Studio 4 är en fullständig omskrivning av det ursprungliga REC decompiler. Det använder mer kraftfulla analys-tekniker som delvis Enda Statisk Uppdrag (SSA), gör att lastning Mac OS X-filer och stöder 32-och 64-bitars binära data.
Även om det fortfarande är under utveckling, det har nått ett stadium som gör den mer användbar än den gamla Rec Studio 2.

Rec Studio 2 sidor är här.

Egenskaper

 

Som nämnts, Rec Studio 4 är fortfarande under utveckling. De flesta mål oberoende funktioner har genomförts, till exempel:

  • Multihost: Rec Studio kan köras på Windows XP/Vista/7, Linux, Mac OS X.
  • Symboliska information och stöd med hjälp av Dvärg 2 och delvis erkännande av Microsofts PBF – format.
  • C++ är delvis erkänt: sargade namn som genereras av gcc är demangled, liksom arv som beskrivs i dwarf2 är hedrad. Dock, C++ är ett mycket brett och svårt språk, så att vissa funktioner som mallar kommer sannolikt inte vara någonsin stöds.
  • Typer och funktionen prototyp definitioner kan anges i text-filer. Vissa Posix-standarden och Windows-Api: er finns redan i Rec Studio paketet.
  • Interaktivitet stöds, begränsat till definition av sektioner, etiketter och funktion ingångar. Kommer behovet av att förbättra det stöd för i-programmet definition av typer och funktion.

Denna tabell visar målet-specifika funktioner som har genomförts så här långt:

 

Har x86 (ia32 -) x86_64 Mips PowerPC mc68k ARMEN
Disassembler Klar Klar Klar Klar Klar Planeras
PE COFF loader Klar Klar n/a n/a n/a n/a
ELF loader Klar Klar Klar Klar Klar Planeras
COFF loader Klar n/a n/a n/a Klar n/a
Mac OS X loader Klar Klar n/a Planeras n/a Planeras
Dwarf2 symbolisk information Klar Klar Klar Klar n/a Planeras
COFF symbolisk information Planeras n/a n/a n/a Planeras n/a
anropskonventionerna nyanläggningar nyanläggningar nyanläggningar Planeras Planeras Planeras
32-och 64-bits nyanläggningar nyanläggningar n/a n/a n/a n/a
Floating-point Planeras Planeras n/a n/a n/a n/a
Windows-Felsökare nyanläggningar Planeras n/a n/a n/a n/a
Avlusaren Gdb nyanläggningar nyanläggningar n/a n/a n/a n/a

REC källor är inte i det offentliga rummet.

Även om REC kan läsa Win32 körbar (aka PE) – filer som produceras av Visual C++ eller Visual Basic 5, det finns begränsningar på produktionen. REC kommer att försöka att använda den information som finns i den .EXE symbol tabell. Om .EXE-filen kompileras utan felsökning information om ett program data base-fil (.PBF) eller Codeview (C7) format användes, eller om alternativet optimering av kompilatorn var aktiverat produktionen kommer inte att vara mycket bra. Dessutom, Visual Basic 5 körbara filer är en blandning av Subrutin – koden och Formulär – data. Det är nästan omöjligt för REC att avgöra vilken som är vilken. Det enda alternativet är att använda en .cmd-fil och manuellt ange vilket område kod och vilket område är data.

I praktiken är det endast C körbara filer meningsfulla dekompileras utgång.

Referenser

Flera andra decompilers är tillgängliga från olika källor. Titta på min reverse engineering sida för en lista.

Ganska överraskande, den inre arkitekturen av en decompiler är mycket liknande till det av en kompilator. Hög kvalitet litteraturen finns för båda. Design Notes sidan har information om de problem som en decompiler författare ansikten när man försöker att dekompilera något mer komplicerade program än enkel enhetstester.
dekompilering sidan har länkar och dokumentation relaterad till decompilers i allmänhet.

Mike van Emmerik är doktorsavhandling avancerat fält av dekompilering genom att skissera lösningar för grundläggande problem i dekompilering av binära program.

Cristina Cifuentes‘ Omvänd Samlingar Tekniker avhandling beskriver i detalj hur teori och genomförandet av dcc decompiler för 8086 DOS-program.

Wotsit sidan har länkar till specifikationer av objektet filformat som COFF och ELF.

Några begrepp relaterade till analys av koden omfattas i Referens Debugger sidor.

Andra grundläggande böcker jag använt under utveckling är:

  • “Kompilatorer – Principer, Metoder och Verktyg”, Aho, Sethi, Ullman, 1986 Addison-Wesley Publishing Co. ISBN 0-201-10088-6.
  • “Avancerad beräkningsvetenskap & Genomförande”, Steven Muchnick, 1997 Morgan Kaufmann Publishers, ISBN 1-55860-320-4.
  • “Hur debuggers arbete – Algoritmer, datastrukturer och Arkitektur”, Jonathan Rosemberg, 1996 John Wiley and Sons, ISBN 0-471-14966-7.

Den nedbrytarna som används i REC togs från olika källor. Filen som copyrite i distributionen har en lista med poäng för vart och ett av nedbrytarna som används i REC. Resten av koden var skriven av mig under de senaste 25 åren. Jag kommer att fortsätta att förbättra REC på min fritid, men jag kan inte garantera att jag kan fixa buggar eller lägga till nya funktioner, processorer, eller värdar.

Ansvarsfriskrivning

Det finns en hel del diskussion om lagligheten av dekompilering. Decompiler verktyg har varit tillgängliga för en mängd olika plattformar för en lång tid. Decompilers, tillsammans med andra verktyg som debuggers, binära redaktörer, nedbrytarna etc. bör endast användas när innehavaren av ett program som har laglig rätt att utföra reverse engineering programmet.

Det har fastställts genom USA och andra länder domstolar att det är lagligt att använda decompilers under fair use-klausul av lagen om upphovsrätt.

För att ta reda på när det är lagligt att använda en för att köra, bör du läsa texten i följande fall:

Även läs mer en diskussion om lagligheten av att använda en emulator för att köra ett binärt program på en annan värd.

Backer Street Programvaran stöder inte användning av omvänd ingenjörskonst verktyg för olagliga syften.


Copyright © 1997 – 2015 Backer Street Programvara – Alla rättigheter reserverade.

Historia:

9 Mars 2011 Version 4.0 Beta: Fullständig omskrivning av decompiler för att stödja mer moderna arkitekturer (MachO-filer, x86_64).
2 juli 2007 Version 2.2: Fast dekompilering av raw-binärer via .cmd-filer. Delvis genomfört registrera ständig förökning. Fast många 68k fel.
6 Maj 2007 Version 2.1: Lade tillbaka +partiet möjlighet att RecStudio; använd Ndisasm för i386, bättre isolering av importera data för Windows binaries
20 Sep. 2005 Version 2.0 d: Fler buggfixar för 68k
6 Sep. 2005 Version 2.0 c: Stöd för Linux .o-filer och förbättrat stöd för 68k
15 Aug. 2005 Version 2.0 b: Underhåll release. Stöd för Watcom sammanställt binärer och breda strängar
1 Aug. 2005 Version 2.0 a: Underhåll release. Fast kraschar, förbättrad kvalitet med Windows körbara filer
30 Maj 2005 Version 2.0: Windows gränssnitt och interaktiva dekompilering
19 Sep. 2000 Version 1.6: Lagt till stöd för SPARC.
16 Mar. 1999 Version 1.5 d: Återställas upptäckt av knappen(). Lagt till stöd för big-endian MIPS.
6 Mar. 1999 Version 1.5: – Stöd för import/export info i Win95-filer; ersättas GNU nedbrytarna med freeware källa; fast många krascher
22 Nov. 1998 Version 1.4: Fast oändlig loop när dekompilera Win95 filer, lagt till Windows prototyp filer
15 Nov. 1998 Version 1.4: Ytterligare webbläsaren förmåga i interaktivt läge, och HTML-sida generationen
30 Jul. 1998
Version 1.3 b: Underhåll: fast kraschar och olika problem i 68k.
15 Feb. 1998 Version 1.3: Lagt till Motorola 68000-och PowerPC-mål.
7 Dec. 1997 Version 1.2: fast PC-gränssnitt. Nu kan vi ladda 16 bitar DOS körbara filer. Fler buggfixar.
26 Okt. 1997 Version 1.1: multi-mål-stöd (386 + R3000), lastning av ELF och PE-filer, flera buggar fixade.
6 Okt. 1997 Portats till Windows-i console-läge (recr4kpc.zip) och SunOS (recr4ks4.tar.gz)
20 Sep. 1997 Skapats för att göra recr4kl.zip tillgängliga.

Leave a Reply

Your email address will not be published. Required fields are marked *