Меню Рубрики

Установка плагинов для ollydbg

Подбираем наиболее интересные плагины для OllyDbg

Содержание статьи

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

OllyDumpEx

При решении различных задач, связанных с реверс-инжинирингом, а если точнее — при работе с вредоносным программным обеспечением, которое активно использует различные обфускаторы и упаковщики, довольно часто приходится производить дамп памяти процесса для последующего его анализа. Так как процесс активен, то большинство его упаковщиков и обфускаторов уже отработали и можно видеть почти истинное лицо негодяя. Так что дампер памяти процесса в таких задачах вещь незаменимая. Каждый исследователь отдает предпочтение тому или иному отладчику, например из-за набора плагинов, но порой необходимо их варьировать, а интерфейс и возможности плагинов хотелось бы иметь одинаковые вне зависимости от отладчика. 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 и других).

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

Хакер #176. Анонимность в интернете

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

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

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

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

OllyMigrate

Каждый дебаггер имеет как сильные, так и слабые стороны, и у каждого они свои — идеального инструмента нет. В одном удобно обходить антиотладочные приемы, в другом использовать огромный арсенал уже готовых плагинов, а в третьем писать собственные скрипты. С недавних пор стало возможно работать последовательно сразу в 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-у

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

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

OllySocketTrace

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

Читайте также:  Установка web page maker

В настоящее время поддерживаются следующие операции с сокетами: 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. Трасса переданных данных

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 строки вида:

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

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

OllyGraph

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

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

InjectHookLib

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

Инжектим библиотеку для перехвата системных функций из 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.

Читайте также:  Установка принтера canon mp520

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

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

Открываем сайт 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-файл имеет следующую структуру:

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

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

  • OpenRCE: OllyDbg Plugins bit.ly/h3M05d
  • Tuts 4 You: OllyDbg Archive bit.ly/1eDJdr4

Заключение

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

источник

Подготавливаем OllyDbg к бою

Об Оле

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

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

  1. CommandBar — добавляет небольшую панель с консолью, которая довольно частенько будет использоваться для быстрой установки точек останова, перемещения по памяти и прочих удобств.
  2. ODbgScript — не менее важное расширение: позволяет писать собственные скрипты, для автоматизации некоторых операций (например есть скрипт-распаковщик Asprotect всех версий, написанный товарищем Volx)
  3. Phantom, StrongOD, HideOD, HideDebugger — плагины частично либо полностью скрывающие отладчик, от системы, отлаживаемых процессов и прочее. При правильной настройке можно даже отлаживать монстров различных защит, в которых полно анти-отладочных процессов.

После такого минимума, отладчик более чем готов к бою. Им стало удобно пользоваться, и нет проблем с лишними поисками при анти-отладке.

Оформление

При первом запуске ollydbg нас встречает довольно унылым однотонным оформлением молочно-белого цвета, без подсветки синтаксиса. Это все решаемо, выбрав в контекстном меню темы оформления, но выбор там не большой — либо холодные нудные темы, либо наоборот пестрящие как попугай. И как понимаете и то и другое затрудняет восприятие информации, что в отладке сильно снижает кпд. Но надо отдать должное разработчикам, почти все в отладчике является настраиваемым.

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

Для этого в файле ollydbg.ini нужно изменить следующие строки:
[Colours]
. тут стандартные цвета.
Scheme name[7]=Veliant Sheme
Scheme[7]=15,12,7,0,4,10,7,13

[Syntax]
. тут стандартные цвета.
Commands[4]=15,15,12,12,11,14,12,15,15,7,12,0,0,0
Operands[4]=1,3,15,15,8,8,10,6,0,0,0,0,0,0
Scheme name[4]=Veliant Sheme

Загрузить сам отладчик можно с официального сайта ollydbg.de
Плагины и дополнительную информацию можно найти например на ресурсе cracklab.ru

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

источник

OllyDbg 2.01

Релиз OllyDbg 2.01 прошел незаметно и не был освещен на Хабре. Вместе с 2 версией автор выпустил дизассемблер по лицензии GPL v3. В конце октября была анонсирована будущая поддержка х64.

Заявленный список изменений в финальной версии:

  • Помощь на 77 страницах.
  • Поддержка языковых файлов для интерфейса.
  • Поддержка AVX инструкций (отсутствует AVX2 и старшие 16 байт YMM регистров не отображаются)
  • Окно стека вызовов (как в версии 1.10)
  • Окно хэндлов (как в версии 1.10)
  • Отображение SEH VEH обработчиков. Чтобы декодировать адреса VEH обработчиков, OllyDbg модифицирует NTDLL.RtlAddVectoredExceptionHandler(), поэтому процесс должен быть запущен из OllyDbg.
  • Поддержка мультибайтовой кодировки в окне дампа.
  • .udl библиотеки, замена объектов с версии 1.10.
  • Поиск целых и плавающих чисел в окне дампа.
  • Поиск процедур (точки входа)
  • Лимитированная поддержка для NTFS потоков.
  • Дамп диска.
  • Точки останова которые используют INT1, HLT, CLI, STI или INSB вместо INT3.
  • Несколько просмотров в одной линии, поддержка повторений.
  • Дамп массивов структур.
  • Микро-анализаторы.
  • Ускоренный поиск.
  • Ассемблирование заявленных данных (DB xx и т.д)
  • Подсветка в «run trace».
  • До 2х ординалов на адрес.
  • Лимитированная поддержка для Win95 через Microsoft Layer для Юникода.
  • Анализ более сложных последовательностей кода.
  • Показать свободную память.
  • Множество исправлений.

В архиве с OllyDbg 2 так же идет тестовое приложение, для показа новых возможностей, демонстрация исправлений багов 1 версии.

Список плагинов для второй версии на которые стоит обратить внимание:

  • OD2-ExPlug — Добавляет много полезных вещей, которые упрощают использование OllyDbg.
  • LuaJIT — Lua скриптинг в OllyDbg.
  • OllyDbg2-python — Python скриптинг в OllyDbg.
  • OllyExt — Anti-AntiDebug.
  • OllyDumpEx — Отличный дампер процессов.
  • OllyMigrate — Миграция между отладчиками.
  • Swordfish — Быстрая установка точек останова через меню.
  • RenameOD — Позволяет переименовывать ollydbg и правит плагины, для того чтобы они работали.
  • Multiline Ultimate Assembler — Удобный внутренний ассемблер, для вставки/копирования кода.
  • CleanUpEx — Очистка каталога OllyDbg.
  • uberstealth — Anti-AntiDebug основанный на коде IdaStealth.

Для быстрой настройки OllyDbg выкладываю ini файл. После замены необходимо будет настроить директории (Options->Options->Directories)
Выглядеть будет так:

источник