Многие реверсеры не понаслышке знакомы с OllyDbg — бесплатным 32-битным отладчиком пользовательского режима (ring 3). Основные плюсы данного отладчика: бесплатность, малый размер, интуитивно понятный интерфейс, простота управления и поддержка плагинов, которые существенно расширяют его функциональность. На сегодняшний день насчитывается свыше 500 плагинов, и среди этого разнообразия мы постарались выделить для тебя наиболее интересные.

 

OllyDumpEx

  • Сайт: bit.ly/16Db6B1
  • Для: OllyDbg 1.10/2.01, ImmunityDbg 1.7/1.8, IDA Pro, WinDbg 6

При решении различных задач, связанных с реверс-инжинирингом, а если точнее — при работе с вредоносным программным обеспечением, которое активно использует различные обфускаторы и упаковщики, довольно часто приходится производить дамп памяти процесса для последующего его анализа. Так как процесс активен, то большинство его упаковщиков и обфускаторов уже отработали и можно видеть почти истинное лицо негодяя. Так что дампер памяти процесса в таких задачах вещь незаменимая. Каждый исследователь отдает предпочтение тому или иному отладчику, например из-за набора плагинов, но порой необходимо их варьировать, а интерфейс и возможности плагинов хотелось бы иметь одинаковые вне зависимости от отладчика. OllyDumpEx Plugin решает данную проблему — он позволяет очень гибко дампить память и поддерживает несколько самых популярных отладчиков: OllyDbg 1/2, Immunity Debugger 1.7/1.8, IDA Pro, WinDbg. Особенности инструмента:

— выбор для дампа EXE-файла, DLL или иного модуля; — поиск MZ/PE-сигнатур в памяти; — поддержка PE32+; — поддержка нативных 64-битных процессов (пока только в IDA Pro); — дамп любого адресного пространства как секции (даже если ее нет в заголовке секций); — добавление пустых секций; — правка RVA в DataDirectory для последующего изменения ImageBase; — автовычисление большого количества параметров (RawSize, RawOffset, VirtualOffset и других).

Проект активно развивается и постоянно тестируется автором на совместимость с последними версиями поддерживаемых отладчиков.

OllyDumpEx за работой
OllyDumpEx за работой

 

Как устанавливать плагины?

Для начала необходимо создать в директории программы папку с названием Plugins. Это позволит в дальнейшем избежать замусоривания основной директории, а в случае необходимости без труда отыскать неработоспособный/конфликтный плагин. Далее копируем DLL-файл плагина в созданную директорию, после чего запускаем отладчик и указываем путь к этой папке:

  • OllyDBG v1.10: выбираем Options -> Appearance и закладку Directories. В пункте Plugin path указываем путь к папке с плагинами.
  • OllyDBG v2.01h: выбираем Options -> Options и раздел Directories. В пункте Plugin directory указываем путь к папке с плагинами.

Перезапускаем отладчик и ищем появившийся пункт в меню Plugins.

 

OllyMigrate

  • Сайт: bit.ly/1btgT9i
  • Для: OllyDbg 1.10/2.01, ImmunityDbg 1.7/1.8, IDA Pro, WinDbg 6

Каждый дебаггер имеет как сильные, так и слабые стороны, и у каждого они свои — идеального инструмента нет. В одном удобно обходить антиотладочные приемы, в другом использовать огромный арсенал уже готовых плагинов, а в третьем писать собственные скрипты. С недавних пор стало возможно работать последовательно сразу в OllyDbg, Immunity Debugger, WinDbg и IDA Pro. Как? Встречай OllyMigrate Plugin — данный плагин позволяет передавать процесс отладки другому отладчику без перезапуска исследуемого приложения. Так что мы можем задействовать только сильные стороны каждого отладчика, используя миграцию от одного к другому. Например, мы можем начать с OllyDbg для обхода антиотладочных приемов и нахождения OEP (Original Entry Point), а затем передать управление Immunity Debugger и, благодаря его поддержке Python-скриптов, править обфусцированную Import Table. Как ты уже понял, плагин поддерживает: OllyDbg 1/2, Immunity Debugger 1.7/1.8, IDA Pro, WinDbg. Особенности:

— многопоточность и возможность приостанавливать потоки; — перенос настроек софтверных точек останова (сохраняя статус включен/выключен).

Передаем полномочия по дальнейшей отладке Immunity Debugger-у
Передаем полномочия по дальнейшей отладке Immunity Debugger-у

Настройка графической схемы

Стандартная цветовая схема OllyDbg достаточно скучна и не очень информативна. К ней, конечно, со временем можно привыкнуть, но лучше настроить внешний вид так, чтобы глаз мгновенно ориентировался в ассемблерном листинге. В конце концов от этого зависит продуктивность работы. Настроить цветовую схему можно двумя способами: непосредственно из меню «Опции -> Оформление -> Colours» или через правку файла ollydbg.ini. Ищешь в файле секцию [Colours] и играешься с настройками цветов по своему желанию. Подробно этот процесс описан на официальном сайте bit.ly/1cGR2zr.

 

OllySocketTrace

Плагин для трассировки всех операций с сокетами, выполняемых процессом. Во время выполнения программы записывает все отправленные и принятые буферы, а также все параметры, переданные в сетевые функции, и возвращенные этими функциями значения.

В настоящее время поддерживаются следующие операции с сокетами: WSASocket, WSAAccept, WSAConnect, WSARecv, WSARecvFrom, WSASend, WSASendTo, WSAAsyncSelect, WSAEventSelect, WSACloseEvent, listen, ioctlsocket, connect, bind, accept, socket, closesocket, shutdown, recv, recvfrom, send и sendto.

Просто запусти плагин, когда захочешь отследить операции, проводимые над сокетами. OllySocketTrace автоматически расставит все необходимые брейкпоинты и будет записывать всю необходимую информацию, как только они будут срабатывать. Чтобы посмотреть получившийся результат, надо выбрать пункт меню OllySocketTrace Log.

Результат работы OllySocketTrace. Трасса переданных данных
Результат работы OllySocketTrace. Трасса переданных данных
 

OllyHeapTrace

Плагин для трассировки манипуляций с кучей. Предназначен в первую очередь для отладки переполнений кучи, когда необходимо контролировать расположение кучи во время перезаписи определенной структуры, например заголовка блока, структуры критической секции или других прикладных данных. При активации плагин автоматически создает точки останова (RtlAllocateHeap, RtlFreeHeap, RtlCreateHeap, RtlDestroyHeap, RtlReAllocateHeap, RtlSizeHeap, GetProcessHeap and RtlInitializeCriticalSection, RtlDeleteCriticalSection) и записывает необходимую информацию, когда их достигает. Особенности:

  • просмотр трассировки кучи;
  • подсветка разными цветами каждой отдельной трассировки кучи;
  • фильтрация «лишней» информации для конкретной кучи.
Лог манипуляций над кучей
Лог манипуляций над кучей
 

Pyllow

Почему так много реверсеров пользуются Immunity Debugger? Да потому, что он, как и IDA, имеет встроенную поддержку Python. Этот скриптовый язык позволяет здорово упростить задачу исследования бинарного кода, позволяя быстренько накидать небольшой скриптик, автоматизирующий ту или иную рутинную задачу. К сожалению, «голый» OllyDbg поддерживает только свой ассемблероподобный язык для написания автоматизирующих скриптов. К счастью, парень под ником Pablo Escobar решил не мириться с таким положением дел и написал плагин для OllyDbg, интегрирующий в него поддержку Python, — Pyllow. Теперь можно писать скрипты, автоматизирующие рутинную работу реверсера, которые будут запускаться внутри отладчика и иметь доступ к большинству OllyDbg API. Плагин распространяется в исходниках, поэтому скажу пару слов про его сборку. Для его компиляции понадобится Visual Studio 2010, библиотека Boost, скомпилированный Boost.Python и 32-разрядная версия Python 3.x (было протестировано на 3.2). В зависимости от настроек ОС тебе, возможно, придется указать Boost все установленные в твоей системе версии Python, а затем выбрать нужную во время сборки. Это можно сделать, добавив в файл/boost-dir/tools/build/v2/user-config.jam строки вида:

using python : 3.2 : "C:/Program Files (x86)/Python32/python.exe" # path to your Python setup : : : 32 # x86-32 only ;

Главное тут — указать правильный путь до интерпретатора. После чего собрать Boost.Python с помощью команды:

bjam --toolset=msvc-10.0 --build-type=complete --with-python python=3.2 address-model=32

Если возникнут какие-то трудности, то официальный мануал Boost должен помочь bit.ly/14FU7xP

 

OllyGraph

Одна из фич, которая меня особенно привлекает в IDA Pro, — возможно представить функцию в виде графа. Так намного удобнее анализировать код, сразу становится видно, каким образом мы дошли до того или иного участка, какие условия и как сработали. Плюс можно еще посмотреть граф вызовов, чтобы понять, из каких мест программы вызывается исследуемая функция. К счастью, данная возможность есть теперь и в OllyDbg, надо лишь установить плагин OllyGraph. Он позволяет представить программу в виде блок-схем, схожих с теми, что строятся в IDA Pro. Более того, для визуализации используется тулза wingraph32, входящая в состав иды. Для версии 1.10 есть альтернативный плагин OllyFlow bit.ly/14lNtpb — немного улучшенная версия OllyGraph от того же автора.

Вызываем OllyFlow для построения графа
Вызываем OllyFlow для построения графа
 

InjectHookLib

Довольно любопытное расширение, которое позволяет перехватывать системные вызовы из пользовательского режима. Техника перехвата интересна, поэтому рекомендую ознакомиться с ней в блоге автора (bit.ly/OjxUMj для Windows XP, bit.ly/NZW6Ci для Windows 7). Все, что требуется от пользователя, — установить плагин и написать свою DLL-библиотеку, в которой будут реализованы обработчики перехватываемых функций. Как ее реализовать, можно посмотреть по ссылкам или изучить исходный код примера bit.ly/168kcF2, который любезно предоставил автор данного расширения. Такой плагин может пригодиться для решения различных задач, например при анализе вредоносных программ и распаковке.

Инжектим библиотеку для перехвата системных функций из user-mode
Инжектим библиотеку для перехвата системных функций из user-mode
 

uberstealth

На какие только ухищрения не пойдут разработчики программ, чтобы защитить свое детище от исследования! Особенно такими подарками изобилуют различные упаковщики, хотя и среди обычных программ тоже довольно часто встречаются особи, нашпигованные антиотладочными приемами. Вручную обходить все эти защиты просто заморишься — тут уже одной правкой возвращаемого функцией IsDebuggerPresent значения не обойдешься. Вот и приходится использовать спецсредства в виде данного плагина. Поставляется он в исходниках, так что придется собирать вручную. Для этого понадобится библиотека Boost>=1.48.0, WTL (Windows Template Library)>=8.1, Windows Driver Kit >= 7.0, DDKBuild. Да-да, зрение тебе не изменило — WDK & DDK, так как для своего сокрытия отладчик использует драйверы. Ну и конечно же, Visual Studio 2008. Что интересно, плагин работает не только в OllyDbg, но и в IDA Pro.

Uberstealth — основные техники сокрытия
Uberstealth — основные техники сокрытия
 

Плагины первой необходимости

Помимо продвинутых плагинов, которые могут использоваться не так уж часто, необходимо также иметь и джентльменский набор на каждый день. Обычно в такой набор включают следующие расширения:

  • Command Bar bit.ly/14GHQcr — аналог встроенного плагина Command Line. Добавляет панель с командной строкой для ввода команд управления отладчиком, что позволяет ускорить процесс отладки.
  • PhantOm Plugin bit.ly/qyNqJO — антиотладочный плагин от российского разработчика для скрытия OllyDbg и исправления уязвимостей отладчика, эксплуатируемых протектором. Помогает от большинства распространенных методов обнаружения.
  • Похожим функционалом обладает плагин китайского происхождения StrongODbit.ly/gzazAd. Ходили даже слухи про обнаруженный в нем рипнутый код из PhantOm.
  • Антиотладочные свойства также присутствуют и в Olly Advanced bit.ly/14GI0An. Это своего рода швейцарский армейский нож, который, помимо прочего, расширяет функционал OllyDbg и устраняет некоторые раздражающие вещи и ошибки данного отладчика.
  • Не менее важный плагин — ODBGScript bit.ly/17Is2AM, позволяющий писать и выполнять скрипты для автоматизации необходимого процесса, например распаковки файлов.
  • Замыкает список OllyDump bit.ly/17Is4si - отличный дампер процесса со встроенным реконструктором таблицы импорта.
 

OllyMSDN

  • Сайт: bit.ly/HABDmP
  • Для: OllyDbg v1.10, Immunity Debugger 1.7/1.8

Количество функций WinAPI огромно, и знать их все как свои пять пальцев просто нереально. Поэтому иногда приходится заглядывать в документацию, чтобы уточнить/узнать, что возвращает та или иная функция или какие параметры принимает на вход. К сожалению, стандартный файл помощи не может предоставить всю необходимую информацию, поэтому приходится запускать браузер и идти на MSDN. Так почему бы полностью не заменить этот файл online-документацией? Для этого всего-то надо установить плагин OllyMSDN, убедиться, что в качестве справки у нас стоит файл WIN32.HLP (Помощь -> Выбрать справку по API). Если такого файла нет, то необходимо создать пустой с таким именем и указать его Olly. Теперь, когда ты попытаешься в отладчике получить доступ к файлу справки, плагин перехватит функцию WinHelp() API и вместо старого файла откроет тебе сайт MSDN. А чтобы получить информацию о конкретной функции во время отладки, надо кликнуть правой кнопкой мыши на инструкцию call и выбрать пункт Help on symbolic name или просто нажать <Ctrl + F1>.

Открываем сайт MSDN вместо стандартного файла справки
Открываем сайт MSDN вместо стандартного файла справки
 

DetachMe

Одной из полезных фич, появившихся во второй версии OllyDbg, была функция Detach, которая позволяла «отсоединить» отладчик от исследуемого процесса, чтобы процесс мог дальше самостоятельно работать. К сожалению, в версии 1.10, любимой многими, такой функции нет — можно только присоединиться к исследуемому процессу. Но это можно исправить, поставив плагин DetachMe, который позволяет в любое время отсоединить отлаживаемые программы от OllyDbg и продолжить осуществлять внешний контроль над отладчиком. Кроме того, отключение программных и процессорных точек останова никак не повлияет на соответствующие udd-файлы.

Отсоединяемся от исследуемого процесса
Отсоединяемся от исследуемого процесса

 

OllyDbg PDK

Плагинов на все случаи жизни не бывает, поэтому рано или поздно может настать момент, когда придется «шить наряд» для Оли самому, чтобы решить очередную амбициозную задачу. В таком случае тебе понадобится PDK — Plugin Development Kit, который можно скачать с официального сайта bit.ly/18oD7t6.

 

Ollydbg-backup

Во время работы над очередным бинарником реверсеру приходится добавлять достаточно много своей информации: писать комментарии к отреверсенным функциям, чтобы на следующий день не изучать заново алгоритм их работы и входные параметры, ставить брейкпоинты и так далее. Вся эта служебная информация автоматически сохраняется отладчиком в UDD-файле. Но случается так, что во время падений дебаггера или его очередной переустановки эти файлы теряются. И надо начинать анализ заново. Чтобы избежать такой печальной ситуации, можно воспользоваться плагином ollydbg-backup, который позволяет сделать бэкап этой информации, сохранив ее в CSV-файл, из которого ее можно легко загрузить обратно в отладчик. CSV-файл имеет следующую структуру:

RVA,label,comment
Ollydbg-backup. Бэкап служебной информации в CSV-файл
Ollydbg-backup. Бэкап служебной информации в CSV-файл
 

WWW

Большое количество плагинов для OllyDbg:

 

Заключение

OllyDbg очень популярный отладчик, плагинов для него существует достаточно много, и про них можно долго рассказывать. Нашей целью не было рассмотреть их все, мы лишь старались подобрать наиболее интересные «наряды» для нашей боевой подруги Оли. Надеюсь, что нам это удалось.

 

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    1 Комментарий
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии