Обратная инженерия

Антон Hex Кукоба (xtin@ua.fm)

Спецвыпуск: Хакер, номер #057, стр. 057-012-1

Пособие по реверсингу для начинающего

Для многих реверсинг и крэкинг – слова-синонимы. На самом деле реверсинг – это всего лишь один из методов, которым пользуются крэкеры, да и то не все.

Из мудрых справочников ты узнаешь, что реверсивная инженерия – это "процесс восстановления спецификации из кода". Спецификация - техническое задание, бумажка, выдаваемая программистам, с указаниями о том, как должна выглядеть и работать система. А реверсивная инженерия в полном объеме - это восстановление всех знаний о системе. Например, полноценный реверсинг программного обеспечения подразумевает дизассемблирование, декомпиляцию, анализ функционирования системы и восстановление спецификации.

Докопаться до истины

Согласно широкому взгляду, реверсивная инженерия представляет собой подход к созданию новых систем на основе существующих. Часто ее используют в промышленном шпионаже, и это не слепое спионеривание, а анализ продукта, созданного конкурентами. Также реверсинг применяется для переработки собственных систем, если код программы уже настолько сложен, что проще восстановить всю систему, чем вчитываться в тонны документации. Тот же метод применяется в ре-инженерии (повторной инженерии), при анализе собственного продукта, чтобы определить узкие места реализации. Кто-то использует реверсивную инженерию программного обеспечения для написания антивирусов, кто-то реверсит антивирусы, чтобы писать не видимые для них вирусы. Плоха или хороша реверсивная инженерия, как обычно, зависит от контекста: для родины ты разведчик, для врагов - шпион. И тяга к ней у человека проявляется с раннего детства, когда он разламывает игрушки, чтобы понять, как они сделаны :).

В этой статье мы разберем два важных этапа реверсинга: дизассемблирование и декомпиляцию.

Инструменты

Реверсить голыми руками у нас умеют только уникумы, которые, как в фильме "Хакеры", смотрят на шестнадцатеричный дамп и сразу все понимают. Большинству нормальных людей все-таки нужны инструменты. Твой выбор будет зависеть от поставленной задачи, я же приведу список утилит, нужных для реверсинга Win32-программ.

Первый, главный и незаменимый инструмент - это дизассемблер. Тут без вариантов: Interactive Disassembler Pro (дальше IDA Pro), на текущий момент единственный действительно интерактивный дизассемблер, просто незаменимая вещь. В нем проводится 95% работ.

Редактор PE-файлов - любой имеющийся у тебя PE-редактор. Главное, чтобы он также умел выводить список процессов и модулей: PE Tools, Lord PE, PEditor.

Редактор ресурсов PE-файлов: ResHacker или ExeScope. Бывает очень нужен, когда все текстовые строки вынесены из кода в секцию ресурсов или специальную DLL.

Декомпиляторы: Dede, Dj java decompiler, SWF Decompiler и т.д. Если ты занимаешься реверсингом большого продукта, будь готов к тому, что он окажется составленным из кучи EXE, DLL, ActiveX, причем все они будут написаны на разных, самых неожиданных языках.

Различные информационные инструменты: Filemon, Regmon, HDD Serial/USB Monitor, Greatis Windowse, Spy++, OLE/COM object viewer. Очень помогает плагин KANAL к PeID: он позволяет находить криптоалгоритмы, используемые в программе. В общем, нужно иметь как можно больше инструментов, которые предоставляют какую-то неочевидную информацию о программе.

Содержание  Вперед на стр. 057-012-2
Выпуски журнала "СПЕЦ Xakep"
Cпец Хакер #01Cпец Хакер #02Cпец Хакер #03Cпец Хакер #04Cпец Хакер #05Cпец Хакер #06Cпец Хакер #07Cпец Хакер #08Cпец Хакер #09Cпец Хакер #10Cпец Хакер #11Cпец Хакер #12Cпец Хакер #13Cпец Хакер #14Cпец Хакер #15Cпец Хакер #16Cпец Хакер #17Cпец Хакер #18Cпец Хакер #19Cпец Хакер #20Cпец Хакер #21Cпец Хакер #22Cпец Хакер #23Cпец Хакер #24Cпец Хакер #25Cпец Хакер #26Cпец Хакер #27Cпец Хакер #28Cпец Хакер #29Cпец Хакер #30Cпец Хакер #31Cпец Хакер #32Cпец Хакер #33Cпец Хакер #34Cпец Хакер #35Cпец Хакер #36Cпец Хакер #37Cпец Хакер #38Cпец Хакер #39Cпец Хакер #40Cпец Хакер #41Cпец Хакер #42Cпец Хакер #43Cпец Хакер #44Cпец Хакер #45Cпец Хакер #46Cпец Хакер #47Cпец Хакер #48Cпец Хакер #49Cпец Хакер #50Cпец Хакер #51Cпец Хакер #52Cпец Хакер #53Cпец Хакер #54Cпец Хакер #55Cпец Хакер #56Cпец Хакер #57Cпец Хакер #58Cпец Хакер #59Cпец Хакер #60Cпец Хакер #61Cпец Хакер #62Cпец Хакер #63Cпец Хакер #64Cпец Хакер #65Cпец Хакер #66Cпец Хакер #67Cпец Хакер #68Cпец Хакер #69Cпец Хакер #70Cпец Хакер #71Cпец Хакер #72Cпец Хакер #73Cпец Хакер #74Cпец Хакер #75