REC Studio 4 – překladač zpětného inženýrství

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

REC Studio je interaktivní dekompilátor.
Čte spustitelný soubor Windows, Linux, Mac OS X nebo raw a pokouší se vytvořit reprezentaci kódu a dat používaných k vytvoření spustitelného souboru ve stylu C.
Byl navržen pro čtení souborů vytvořených pro mnoho různých cílů a byl zkompilován na několika hostitelských systémech.

REC Studio 4 je kompletní přepis původního dekompilátoru REC. Využívá výkonnější analytické techniky, jako je částečné Single Static Assignment (SSA), umožňuje načítání souborů Mac OS X a podporuje 32 a 64 bitové binární soubory.
Přestože je stále ve vývoji, dosáhlo fáze, díky které je užitečnější než staré Rec Studio 2.

Stránky Rec Studio 2 jsou zde.

Funkce

Jak již bylo zmíněno, Rec Studio 4 je stále ve vývoji. Většina funkcí nezávislých na cíli byla dokončena, jako například:

  • Multihost: Rec Studio běží na  Windows XP/Vista/7, Ubuntu Linux, Mac OS X.
  • Podpora symbolických informací pomocí Dwarf 2 a částečné rozpoznání  formátu PDB společnosti Microsoft.
  • C++ je částečně rozpoznáno: pozměněná jména generovaná gcc jsou demanglována, stejně jako je respektována dědičnost popsaná v dwarf2. C++ je však velmi široký a obtížný jazyk, takže některé funkce, jako jsou šablony, pravděpodobně nebudou nikdy podporovány.
  • Typy a definice prototypů funkcí lze specifikovat v textových souborech. Některá standardní rozhraní Posix a Windows API jsou již k dispozici v balíčku Rec Studio.
  • Je podporována interaktivita omezená na definici sekcí, štítků a vstupních bodů funkcí. Bude potřeba jej vylepšit, aby podporoval definici typů a parametrů funkcí v programu.

Tato tabulka ukazuje funkce specifické pro cíl, které byly dosud implementovány:

 

Vlastnosti x86 (ia32) x86_64 Mips PowerPC mc68k ARM
Rozebíratel Hotovo Hotovo Hotovo Hotovo Hotovo Plánová
PE COFF nakladač Hotovo Hotovo n/a n/a n/a n/a
ELF nakladač Hotovo Hotovo Hotovo Hotovo Hotovo Plánová
COFF nakladač Hotovo n/a n/a n/a Hotovo n/a
Mac OS X nakladač Hotovo Hotovo n/a Plánová n/a Plánová
Dwarf2 symbolické informace Hotovo Hotovo Hotovo Hotovo n/a Plánová
COFF symbolické informace Plánová n/a n/a n/a Plánová n/a
Volací konvence Probíhá Probíhá Probíhá Plánová Plánová Plánová
32 a 64 bitů Probíhá Probíhá n/a n/a n/a n/a
Plovoucí bod Plánová Plánová n/a n/a n/a n/a
Windows ladicí program Probíhá Plánová n/a n/a n/a n/a
Gdb ladicí program Probíhá Probíhá n/a n/a n/a n/a

Zdroje REC nejsou ve veřejné doméně.

Ačkoli REC dokáže číst spustitelné soubory Win32 (aka PE) vytvořené Visual C++ nebo Visual Basic 5, existují omezení produkovaného výstupu. REC se pokusí použít jakékoli informace obsažené v tabulce symbolů .EXE. Pokud byl soubor .EXE zkompilován bez ladicích informací, pokud byl použit formát databázového souboru programu (.PDB) nebo Codeview (C7), nebo pokud byla povolena možnost optimalizace kompilátoru, nebude vytvořený výstup příliš dobrý. Spustitelné soubory Visual Basic 5 jsou navíc kombinací kódu podprogramu a dat formuláře. Pro REC je téměř nemožné určit, která je která. Jedinou možností je použít soubor .cmd a ručně určit, která oblast je kód a která oblast je data.

V praxi pouze spustitelné soubory C produkují smysluplný dekompilovaný výstup.

Reference

Několik dalších dekompilátorů je dostupných z různých zdrojů. Seznam najdete na mé stránce reverzního inženýrství.

Spíše překvapivě je vnitřní architektura dekompilátoru velmi podobná architektuře kompilátoru. Pro oba existuje kvalitní literatura. Stránka Poznámky k návrhu obsahuje informace o problémech, se kterými se autor dekompilátoru potýká, když se pokouší dekompilovat o něco složitější programy, než jsou jednoduché testy jednotek. Dekompilace stránka obsahuje odkazy a dokumentaci vztahující se k dekompilátory obecně.

Disertační práce Mika van Emmerika významně pokročila v oblasti dekompilace tím, že nastínila řešení základních problémů při dekompilaci binárních programů.

Disertační práce Cristiny Cifuentes Reverzní kompilační techniky podrobně popisuje teorii a implementaci dekompilátoru dcc pro 8086 DOSových programů.

Stránka Wotsit obsahuje odkazy na specifikace formátů objektových souborů jako COFF a ELF.

Některé koncepty související s analýzou kódu jsou popsány na stránkách referenčního ladicího programu.

Další základní knihy, které jsem během vývoje použil, jsou:

  • „Překladače – principy, techniky a nástroje“, Aho, Sethi, Ullman, 1986 Addison-Wesley Publishing Co. ISBN 0-201-10088-6.
  • „Pokročilý design a implementace kompilátoru“, Steven Muchnick, 1997 Morgan Kaufmann Publishers, ISBN 1-55860-320-4.
  • „Jak fungují debuggery – Algoritmy, datové struktury a architektura“, Jonathan Rosemberg, 1996 John Wiley and Sons, ISBN 0-471-14966-7.

Demontáž používané v REC byly převzaty z různých zdrojů. Soubor copyrite v distribuci má seznam kreditů pro každý z disassemblerů používaných v REC. Zbytek kódu jsem napsal sám během posledních 25 let. Ve svém volném čase budu nadále vylepšovat REC, ale nemohu zaručit, že mohu opravit chyby nebo přidat nové funkce, procesory nebo hostitele.

Zřeknutí se odpovědnosti

O zákonnosti dekompilace se hodně diskutuje. Nástroje dekompilátoru jsou k dispozici pro různé platformy již dlouhou dobu. Dekompilátory spolu s dalšími nástroji, jako jsou debuggery, binární editory, disassemblery atd., by se měly používat pouze v případě, že vlastník programu má zákonné právo provádět zpětnou analýzu programu.

Soudy USA a dalších zemí stanovily, že je legální používat dekompilátory podle ustanovení o spravedlivém použití autorského zákona.

Chcete-li zjistit, kdy je legální používat dekompilátor, měli byste si přečíst text následujících případů:

Také přečíst diskusi o zákonnosti pomocí emulátoru spustit binární program na jiného hostitele.

Backer Street Software nepodporuje použití nástrojů zpětného inženýrství pro nezákonné účely.


Copyright © 1997 – 2015 Backer Street Software – All rights reserved.

Dějiny:

9. března 2011  Verze 4.0 Beta: Kompletní přepsání dekompilátoru pro podporu modernějších architektur (soubory MachO, x86_64).
2. července 2007  Verze 2.2: Opravená dekompilace nezpracovaných binárních souborů prostřednictvím souborů .cmd. Částečně implementované šíření registrových konstant. Opraveno mnoho 68k chyb.
6. května 2007  Verze 2.1: Přidána zpět možnost +dávka do RecStudia; použijte Ndisasm pro i386; lepší izolace importovaných dat pro binární soubory Windows
20. září 2005  Verze 2.0d: Další opravy chyb za 68k
6. září 2005  Verze 2.0c: Podpora pro soubory Linux .o a vylepšená podpora pro 68k
15. srpna 2005  Verze 2.0b: Vydání údržby. Podpora pro binárky kompilované Watcom a široké řetězce
1. srpna 2005  Verze 2.0a: Vydání údržby. Opravené pády, vylepšená kvalita se spustitelnými soubory Windows
30. května 2005  Verze 2.0: Windows GUI a interaktivní dekompilace
19. září 2000  Verze 1.6: Přidána podpora pro SPARC.
16. března 1999  Verze 1.5d: Obnovená detekce switch(). Přidána podpora pro big-endian MIPS.
6. března 1999  Verze 1.5: Podpora pro import/export informací v souborech Win95; nahradil GNU disassemblery freewarovým zdrojem; opraveno mnoho pádů
22. listopadu 1998  Verze 1.4a: Opravena nekonečná smyčka při dekompilaci souborů Win95; přidány prototypové soubory Windows
15. listopadu 1998  Verze 1.4: Přidána možnost prohlížeče v interaktivním režimu a generování stránky HTML
30. července 1998 
Verze 1.3b: Údržba: opraveny pády a různé problémy v 68k.
15. února 1998  Verze 1.3: Přidány cíle Motorola 68000 a PowerPC.
7. prosince 1997  Verze 1.2: opraveno uživatelské rozhraní PC. Nyní můžeme načíst 16bitové spustitelné soubory DOSu. Další opravy chyb.
26. října 1997  Verze 1.1: podpora více cílů (386 + R3000), načítání souborů ELF a PE, opraveno několik chyb.
6. října 1997  Portováno na Windows v režimu konzoly (recr4kpc.zip) a na SunOS (recr4ks4.tar.gz)
20. září 1997  Vytvořeno pro zpřístupnění recr4kl.zip.

Leave a Reply

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