Science for all





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

REC Studio 4 – Реверсний інженерний компілятор

REC Studio – це інтерактивний декомпілятор.

Він читає виконувані файли Windows, Linux, Mac OS X або необроблені виконувані файли, та намагається виконати репрезентацію С коду та даних, які використовуються для того, щоб побудувати виконувані файли.

Ця програма була розроблена для читання файлів, які виконуються для безліч різних цілей, та була компільована для декількох хост систем.

REC Studio 4 – це повний перепис оригінальної версії декомпілятору REC. Він застосовує сильніші техніки проведення аналізу, такі як Single Static Assignment (SSA), має можливість завантажувати файли Mac OS X та підтримує 32 та 64 бітні подвійні системи.

Незважаючи на те, що програма ще знаходиться на стадії вдосконалення, вона все ж вже краща за стару версію Rec Studio 2.

Інформацію щодо Rec Studio 2 можна знайти тут.

Основні характеристики

Як вже говорилося раніше, Rec Studio 4 знаходиться на стадії вдосконалення. Більшість основних незалежних характеристик вже завершена, а саме:

·        Мультіхост: Rec Studio працює на таких платформах: Windows XP/Vista/7, Ubuntu Linux, Mac OS X.

·        Інформаційна допомога здійснюється завдяки Dwarf 2 та частково визнанням формату Microsoft PDB.

·        Часткове використання C++: невірні імена, які генеруються за допомогою модуля gcc автоматично коригуються, так само як і унаслідування, яке описується в dwarf 2 набуває чинності. Але, мова C++ є досить широкою та складною, таким чином, деякі функції такі як шаблони мабуть не будуть підтримуватися.

·        Терміни прототипу функції та типів описані в текстовому файлі. Деякі стандартні функції API Posix та Windows вже містяться в пакеті програми Rec Studio.

·        Є підтримка інтерактивності, яка обмежена в деяких розділах, ярликах, та точках введення функції. Це те, що потрібно доробити, щоб можна було підтримувати параметри дефініцій типів та функції.

Таблиця відображає основні характеристики, які вже містяться в програмі:

Характеристика

x86 (ia32)

x86_64

Mips

PowerPC

mc68k

ARM

Disassembler

Завершено

Завершено

Завершено

Завершено

Завершено

Planned

PE COFF loader

Завершено

Завершено

Відсутнє

Відсутнє

Відсутнє

Відсутнє

ELF loader

Завершено

Завершено

Завершено

Завершено

Завершено

Планується

COFF loader

Завершено

Відсутнє

Відсутнє

Відсутнє

Завершено

Відсутнє

Mac OS X loader

Завершено

Завершено

Відсутнє

Планується

Відсутнє

Планується

Dwarf2 symbolic information

Завершено

Завершено

Завершено

Завершено

Відсутнє

Планується

COFF symbolic information

Планується

Відсутнє

Відсутнє

Відсутнє

Планується

Відсутнє

Calling conventions

Розробляється

Розробляється

Розробляється

Планується

Планується

Планується

32 and 64 bits

Розробляється

Розробляється

Відсутнє

Відсутнє

Відсутнє

Відсутнє

Floating-point

Планується

Планується

Відсутнє

Відсутнє

Відсутнє

Відсутнє

Windows Debugger

Розробляється

Планується

Відсутнє

Відсутнє

Відсутнє

Відсутнє

Gdb Debugger

Розробляється

Розробляється

Відсутнє

Відсутнє

Відсутнє

Відсутнє

 

Джерела REC не знаходяться у публічному домені.

Навіть якщо REC може читати виконувані файли Win32 (aka PE), які обробляються Visual C++ або Visual Basic 5, все одно існують обмеження на обробку вихідних файлів. Декомпілятор REC буде намагатися використати будь-яку інформацію, яка присутня в символічній таблиці .EXE. Якщо ж файл .EXE був скомпільований без налагоджування у разі, якщо файл програми бази даних користувався форматами (.PDB) або Codeview (C7), або ж функція оптимізації компілятору був увімкнена, у такому разі обробка вихідного файлу буде невдалою. Окрім того, виконувані файли Visual Basic 5 – це поєднання коду Subroutine та даних Form. Декомпілятор REC майже не здатен їх розпізнати. Єдиний спосіб це зробити полягає у використанні файлу .cmd та в ручному режимі виявити який файл відноситься до коду, а який до бази даних.

Як показує практика, тільки виконувані файли С виконують значиму декомпільовану обробку даних.

Посилання

Інші декомпілятори можна знайти на інших веб-сайтах. На сторінці реверсної обробки можна знайти повний список цих декомпіляторів. Досить несподівано, але внутрішня архітектура декомпілятору дуже схожа на сам компілятор. В них обох наявна високоякісна література. На сторінці Нотатки дизайну можна знайти інформацію про проблеми, якими розробник декомпілятору стикається при спробі декомпілювати трохи більш складні програми, а не прості модульні тести.

На сторінці декомпіляцій можна знайти посилання та документацію, які описують декомпілятори в цілому.

Дослідження, яке описане в докторській роботі Майка ван Еммеріка значною мврою підвищило розвиток у сфері декомпіляції шляхом описання рішень до фундаментальних проблем декомпіляції бінарних програм.

А ось дослідження на тему технік реверсного компілювання Крістіни Сіфуетес описує деталі теоретичного матеріалу та імплементації декомпілятору dcc, спрямований для програм 8086 DOS.

На сторінці Wotsit можна знайти посилання на специфікації щодо об’єкту та форматів типу COFF та ELF.

Деякі концепти, які відносяться до аналізу коду описані на сторінці Reference Debugger.

Інші книги на які я посилався під час проведення дослідження:

  • "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.

Реасемблери, які входять в декомпілятор REC були взяти з декількох джерел. Файл copyrite при розподіленні має список кредитних лімітів для кожного реасемблера REC. Іншу частину коду я писав сам протягом останніх 25 років. Я буду продовжувати доробляти REC у вільний від роботи час, але я не гарантую, що зможу виправити всі помилки та добавити якісь нові функції, процесори або хости.

Зауваження

Існує дуже багато суперечок щодо законного використання декомпіляції. Інструменти декомплітору мали вільний доступ до будь-яких платформ протягом багатьох років. Декомпілятори, так як і інші інструменти, наприклад, дебаггери, бінарні редактори, реасемблери та інші можна використовувати тільки у разі, якщо власних програми має законне право на реверс програми.

Судом США та іншими країнами були прийнято закон про легальне використання декомпіляторами тільки на підставі чесного використання, прописне в законі про авторське право.

Для того, щоб розуміти чи легальне ваше використання декомпіляторів, вам необхідно прочитати текст з даних джерел:

Також прочитайте дискусію на тему законного використання емуляторів для запуску бінарних програм на різних платформах.

Компанія Backer Street Software не підтримує ідею використання реверсних інструментів в незаконних цілях.

Авторське право © 1997 - 2015 Backer Street Software – всі права захищені.

Історичні дані програми:

9 березня 2011 Версія 4.0 Beta: повністю переписаний декомпілятор для підтримки більш сучасних архітектурних інтерфейсів (файли macho, x86_64).

2 липня 2007 Версія 2.2: Виправлена декомпіляція необроблених бінарних файлів шляхом .CMD. Частково реалізоване постійне очікування реєстру. Виправлено багато помилок 68k

6 травня 2007 Версія 2.1: Додана опція back+batch RecStudio; використання Ndisasm для i386; краща ізоляція імпорту даних для бінарних файлів Windows,

20 вересня 2005 Версія 2.0d: більше виправлень для 68k

6 вересня 2005 Версія 2.0c: підтримка файлів Linux .o і поліпшена підтримка 68k

15 серпня 2005 Версія 2.0b: реліз обслуговування. Підтримка бінарного коду Watcom та широких рядків

1 серпня 2005 Версія 2.0a: реліз обслуговування. Виправлені креши, покращена якість виконуваних файлів для Windows.

30 травня 2005 Версія 2.0: Windows GUI і інтерактивна декомпіляція

19 вересня 2000 Версія 1.6: Додана підтримка SPARC.

16 березня 1999 Версія 1.5D: Відновлене виявлення перемикача (). Додана підтримка для зворотного порядку MIPS.

6 березня 1999 Версія 1.5: підтримка імпорту / експорту інформації файлів Win95; замінені реасемблери GNU, завантажені з безкоштовного джерела; виправлено безліч аварій

22 листопада 1998 Версія 1.4a: Виправлений ​​нескінченний цикл при обробці декомпіляції файлів Win95; додані прототипні файли для Windows

15 листопада 1998 Версія 1.4: Додана можливість користування браузеру в інтерактивному режимі, і генерація HTML-сторінки

30 липня 1998 Версія 1.3b: технічне обслуговування: Виправлені аварії та різні проблеми 68k.

15 лютого 1998 Версія 1.3: Додані функції для Motorola 68000 і PowerPC.

7 грудня 1997 Версія 1.2: виправлений ​​користувальницький інтерфейс комп'ютера. Тепер можна завантажувати виконувані файли 16 bit DOS. Проведено ще більше виправлень.

26 жовтня 1997 Версія 1.1: підтримка опції multi-target (386 + R3000), завантаження файлів ELF і PE, виправлено декілька помилок.

6 жовтня 1997 року, адаптація під ОС Windows в консолі (recr4kpc.zip) і SunOS (recr4ks4.tar.gz)

20 вересня 1997 Створено для доступу до файлу recr4kl.zip.

Головна сторінка CG

Сторінку обновлено: 22 листопада, 2015 року.