Ollydbg — x 64-bit download

Дизассемблеры

Сложно представить себе реверс без инструментов статического анализа кода. На сегодняшний день дела с дизассемблерами обстоят немногим лучше, чем с отладчиками, но все-таки можно выделить фаворитов в этой области. Признанный стандарт антивирусных лабораторий — это дизассемблер IDA Pro. Второе место по востребованности занимает фреймворк для реверс-инжиниринга Radare2 (хотя многие считают, что Radare2 не уступает IDA).

IDA Disassembler

Существует две версии IDA — платная (Pro) и бесплатная (Starter). Бесплатная версия урезана по количеству поддерживаемых архитектур — она понимает только x86, кроме того, она не поддерживает плагины. Платная версия лишена подобных ограничений: она поддерживает внушительное количество архитектур процессоров и позволяет подключать расширения.

В IDA есть встроенный отладчик, весьма простенький по набору функций, но к его самобытному интерфейсу придется приноровиться. Также IDA может быть укомплектован дополнением Hex-Rays — декомпилятором исходного кода приложения в код на C. Это полезнейшее дополнение, которое значительно ускоряет анализ программы.

В целом IDA — мощнейший и прекрасно отполированный инструмент, который развивался много лет. Жаль только, что профессиональная версия стоит в районе 500–1000 долларов в зависимости от вида лицензии и кому попало не продается. Кто попало в результате выкручивается как может.

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Лаборатория для исследований

Как и в прошлый раз, все эксперименты по анализу малвари мы будем выполнять в нашей импровизированной лаборатории — виртуальной машине с предустановленной Windows XP. Набор инструментов, в принципе, всегда один и тот же, разница лишь в том, как часто мы будем применять тот или иной.

Обpазцы исследуемой малвари прилагаются к статье. Помни, при распaковке архива с лабами антивирус будет распознавать файлы соoтветствующим образом. Не забывай, что бэкап — лучший друг админа! До и после всех экспeриментов не забывай делать резервные копии, тем более это так легко с виртуальными машинами: раз, два — и снапшот готов! А это потом сохранит тебе кучу времени, поверь, проверено на практике!

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. Особенности:

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

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

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

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.

x64dbg Plugins

  • Checksec: x64dbg plugin to check security settings.
  • ClawSearch: A memory scanner plugin for x64dbg, inspired by Cheat Engine.
  • x64DBGPYLIB: Port of windbglib to x64dbgpy, in an effort to support mona.py in x64dbg.
  • xAnalyzer: It is capable of doing various types of analysis over the static code of the debugged application to give more extra information to the user.
  • x64DBGIDA: Official x64dbg plugin for IDA Pro.
  • x64dbg Dark Theme: Simple dark theme.
  • X64DBG YaraGen: Generate Yara rules from function basic blocks.
  • Diff: Very simple plugin to diff a section in memory with a file.
  • Unpacking Script: Unpacking script for x64dbg.
  • Anti Anti: Open-source user-mode Anti-Anti-Debug plugin.
  • ScyllaHide: https://github.com/x64dbg/ScyllaHide
  • Highlightfish: Plugin to customize x64dbg.
  • TitanHide: It is a driver intended to hide debuggers from certain processes.
  • idenLibX: idenLib (Library Function Identification ) plugin for /
  • Official x64dbg plugins: Official repository of the x64dbg debugger plugins.

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 и других).

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

OllyGraph

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

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.

Ollydbg-backup

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

RVA,label,comment

IDA Plugins

  • Lazy ida: Add functionalities such as function return removing, converting data, scanning for string vulnerabilities.
  • IDAemu: Use for emulating code in IDA Pro. It is based on unicorn-engine.
  • IDA_EA: A set of exploitation/reversing aids for IDA.
  • Labeless: System for labels/comments synchronization with a debugger backend.
  • Idadiff: A diffing tool using Machoc Hash.
  • IDA Skin: Plugin providing advanced skinning support for IDA Pro utilizing Qt stylesheets, similar to CSS.
  • Auto Re: Auto-renaming dummy-named functions, which have one API call or jump to the imported API.
  • IDA IPython: An IDA Pro Plugin for embedding an IPython.
  • IDA Sploiter: An exploit development and vulnerability research
    plugin.
  • IDATropy: It is designed to generate charts of entropy and histograms using the power of idapython and matplotlib.
  • IDA Patcher: It is designed to enhance IDA’s ability to patch binary files and memory.
  • IDAHunt: Analyze binaries with IDA Pro and hunt for things in IDA Pro.
  • IDA for Delphi: IDA Python Script to Get All function names from Event Constructor (VCL).
  • IDA ARM Highlight: Highlighting and decoding ARM system instructions.
  • Diaphora: It is a program diffing plugin for IDA, similar to Zynamics Bindiff.
  • Yaco: Collaborative Reverse-Engineering for IDA.
  • Driver Buddy: It assists with the reverse engineering of Windows kernel drivers.
  • Heap Viewer: Used to examine the glibc heap, focused on exploit development.
  • HexRayPytools: Assist in the creation of classes/structures and detection of virtual tables.
  • Ponce: Symbolic Execution just one-click away!
  • idenLib.py: idenLib (Library Function Identification ) plugin for
  • J.A.R.V.I.S A plugin for IDA Pro to assist you with the most common reversing tasks. It integrates with the (J.A.R.V.I.S) tracer.
  • golang_loader_assist: Making GO reversing easier in IDA Pro
  • FindYara: IDA python plugin to scan binary with yara rules.
  • Karta: Source code assisted fast binary matching plugin for IDA
  • VT-IDA-PLUGIN: This plugin integrates functionality from VirusTotal web services into the IDA Pro’s user interface.
  • mkYARA: mkYARA comes with a IDA plugin to easily create YARA signatures by selecting a set of instructions and choosing one of the mkYARA -> Generate YARA rule options.
  • Oregami: IDA plugins and scripts for analyzing register usage frame.
  • IDA_IFL: A small plugin with a goal to provide user-friendly way to navigate between functions and their references.
  • xray: xray is a plugin for the Hexrays decompiler that both filters and colorizes the textual representation of the decompiler’s output based on configurable regular expressions.
  • Lighthouse: Lighthouse is a powerful code coverage plugin for IDA Pro and Binary Ninja. As an extension of the leading disassemblers, this plugin enables one to interactively explore code coverage data in new and innovative ways when symbols or source may not be available for a given binary.
  • CAPA Explorer: Capa explorer is an IDA Pro plugin written in Python that integrates the FLARE team’s open-source framework, capa, with IDA.
  • Ghida: GhIDA is an IDA Pro plugin that integrates the Ghidra decompiler in IDA.
  • vt-ida-plugin: This plugin integrates functionality from VirusTotal web services into the IDA Pro’s user interface.
  • Virtuailor: IDAPython tool for C++ vtables reconstruction.
  • ipyda: PyIDA is a python-only solution to add an IPython console to IDA Pro.
  • ComIDA: An IDA Plugin that help during the analysis of modules using COM.
  • lumen: A private Lumina server for IDA Pro.
  • Hexrays Toolbox: Hexrays Toolbox is a script for the Hexrays Decompiler which can be used to find code patterns within decompiled code.
  • HRDevHelper: This plugin for the HexRays decompiler creates a graph of a decompiled function’s AST using IDA’s internal graph viewer.
  • ida-minsc: IDA-minsc is a plugin for IDA Pro that assists a user with scripting the IDAPython plugin that is bundled with the disassembler.
  • Bip: Bip is a project which aims to simplify the usage of python for interacting with IDA. Its main goals are to facilitate the usage of python in the interactive console of IDA and the writing of plugins.
  • FIDL: This is a set of utilities wrapping the decompiler API into something sane. This code focus on vulnerability research and bug hunting.
  • flare-emu: flare-emu marries a supported binary analysis framework, such as IDA Pro or Radare2, with Unicorn’s emulation framework to provide the user with an easy to use and flexible interface for scripting emulation tasks.

Removing One Letter From the Message

0041CB6EAssemble

An «Assemble at 0041CB6E» box appears,
as shown below.

This shows the command at this location. It’s
a PUSH instruction, placing the address
467C7C onto the stack. That address
points to the letter «l» in the ASCII string
«login as: «, as shown on the right side
of the instruction line, outlined in green
in the image below.

In the «Assemble at 0041CB6E» box, change
the last character to D,
as shown below. This will move the
pointer from the «l» to the «o» in the
string «login as: «.

Click the Assemble button.

Click the Cancel button.

The message on the right now says
«ogin as: «,
as shown below.

OllyHeapTrace

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

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

Краткое руководство по анализу

Типовой набор действий банален: определение сигнатуры упаковщика, поиск OEP, дамп программы на диск, восстановление таблицы импорта, восстановление релоков, пересборка. А если же файл не просто был запакован, а еще и обработан протектором, то могут потребоваться дополнительные действия, такие, например, как удаление мусорных инструкций, обход антиотладочных приемов, изоляции функций проверки целостности кода CRC.

Несколько слов о динaмических библиотеках. Распаковка DLL практически не отличается от распaковки EXE-файла. У DLL, как и у EXE, есть точка входа в код программы — Entry Point, созданная пакeром, и оригинальная OEP. Таким образом, нужно остановиться на DLL в Entry Point, распарсить и оттуда идти к единствeнно верной OEP нашей DLL. Дальше можно стандартно дампить.

И еще пара коротких абзацев из матчасти, которая сегодня нам пригодится.

Несколько слов о breakpoints (точках останова)

Точки останова — часто используемый и незаменимый прием любого реверс-аналитика. Основные режимы — это:

  • останов при чтении;
  • останов при записи;
  • выполнение памяти по заданнoму адресу.

Команда CALL $+5 POP REG характерна для защитных механизмов, к примеру копирующих себя на стек. А часто возникающая инструкция PUSHFD присутствует в самотрассирующихся программах и антиотладочных защитных механизмах.

OllyDbg поддерживает несколько видов брейк-пойнтов:

  • обычный брейк-пойнт, первый байт команды, на которой мы хотим остановиться, заменяется специальной командой INT3, вызывается по клавише F2 или из контекстного меню;
  • условный брейк-пойнт (Shift + F2) — обычный INT3 брейк-пойнт со связанным услoвием;
  • условный брейк-пойнт с записью (Shift + F4) — условный брейк-пойнт с возможностью регистрации значения некоторого выражения или параметров известной функции.

Шпаргалка: способы адресации

Немного о том, как передать управление в другую часть кода.

1-й способ:

2-й способ:

3-й способ:

4-й способ:

5-й способ:

Все эти примеры могут нам пригодиться при нахождении OEP.

Немного о структуре PE-файла

Обзор структуры PE-файла выходит за рамки данной статьи, поэтому не будем лезть в дебри, однако полностью обойти эту тему нельзя, и знание матчасти в дальнейшем нам хорошо поможет. Могу посоветовать следующие статьи по анатомии PE-файлов на Хабре, хороший гайд по полному пониманию Win32- и Win64-файлов и небольшой ликбeз на ExeL@b.

Как видишь, вопросу внутреннего устройства PE-файла посвящено большое количество теоретического материала, и это неслучайно: его структура довольно богата, а умение хорошо ориентироваться в ней позволяет проводить более сложный и глубокий анализ. Но, повторюсь, эта тема выходит за рамки нашей статьи, поэтому скажем о ней весьма кратко. Если упрощенно, то PE-файл — исполняемый EXE-файл, кoторый содержит непосредственно исполняемый код и данные, необходимые для корректного выполнения программы в системе. Обычно содержимое PE-файла разбито на несколько секций, которые описываются в заголовке. Это что-то типа оглавления к книге. Попробую объяснить пару важных нюансов.

Значения RVA/VA

RVA (Relative Virtual Address) переводится как относительный виртуальный адрес. Его относительность заключается в том, что он отсчитывается от адреса загрузки, который может быть, а может и не быть равен ImageBase.
RVA вычисляется так:

где VA (Virtual Address) — виртуальный адрес элемента в памяти, а адрес загрузки берется из поля OptionalHeader.ImageBase в том случае, если он равен ImageBase, либо вычисляется лoадером.

Общий алгоритм распаковки большинства файлов таков:

  1. Находим RVA OEP.
  2. Дампим программу.
  3. Восстанавливаем таблицу импорта.
  4. Меняем точку входа на оригинальную.

Значение OEP

OEP (Original Entry Point) — это адрес, с которого бы начала выполняться программа, если бы не была упакована. Virtual Address (VA) — виртуальный адрес элемента в памяти. Relative Virtual Adress (RVA) — относительный виртуальный адрес. Адрес относительно ImageBase. К примеру, мы нашли OEP, равный 00301000, а ImageBase равно 00300000, тогда RVA OEP будет 1000. Значение ImageBase можно узнать, посмотрев в любом редакторе PE-заголовков.

Части главного окна

Ок, всё готово к запуску. Кликаем на OllyDbg:

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

Это чистый OllyDbg, и первой программой, которую мы откроем только для того, чтобы ознакомиться с OllyDbg, станет знаменитый CrackMe CrueHead’а , который приложен к данному туториалу.

Чтобы открыть файл в OllyDbg, идём в File -> Open или нажимаем на иконку:

Откроется окно, с помощью которого можно найти нужный файл, в данном случае это crackme CrueHead’а.

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

Здесь мы рассмотрим четыре части главного окна OllyDbg:

1. Дизассемблированный код

Также называется листингом. Тут Олли показывает нам дизассемблированный код программы, которую мы собираемся отлаживать; по умолчанию Олли сконфигурирована так, чтобы анализировать программу при её открытии. Это можно изменить в Options -> DEBUGGING OPTIONS.

То есть, если отмечена галочка «AUTO START ANALISIS OF MAIN MODULE», OllyDbg проанализирует программу и покажет о ней дополнительную информацию.

Это начало проанализированного листинга крэкми CrueHead’а, и если мы откроем его без анализа, то сможем увидеть разницу.

В окне анализа содержится множество информации, которая, несмотря на то, что пока нам не очень понятна, выглядит весьма интересной. В то же время приятно знать, что её можно в любой момент убрать, если анализ оказался не слишком точным или в него закралась какая-то ошибка.

Зачастую OllyDbg отображает некоторые части программы некорректно, так как ошибочно интерпретирует исполняемый код как данные, и тогда она отображает примерно следующее:

В этом случае можно вручную убрать анализ, кликнув на листинге правой кнопкой мыши и выбрав «ANALISIS -> REMOVE ANALYSIS FROM MODULE».

И тогда листинг отобразится корректно.

Другой опцией, которой вы можете воспользоваться для облегчения работы и которая мне лично не очень нравится (но вкусы бывают разные), является подсветка jump (переходов) и call (вызовов) – кликните на листинге правой кнопкой мыши и выберите «APPEARENCE -> HIGHLIGHTING -> JUMPS AND CALLS».

Получится следующее:

Здесь мы видим, что call’ы подсвечены лазурным цветом, а переходы – жёлтым.

Теперь листинг стал более читаемым, но пока у нас нет ни малейшей идеи, что это означает, но хорошо иметь инструмент подготовленным к дальнейшему использованию.

2. Регистры

Второе важное окно – это окно регистров

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

Есть значительно больше информации, которую мы не видим, но можно устанавливать режим отображения в три состояния («VIEW FPU REGISTERS» – отображать FPU-регистры, «VIEW 3D NOW REGISTERS» – отображать «3D NOW»-регистры и «VIEW DEBUG REGISTERS» – отображать отладочные регистры). По умолчанию отображаются первые.

3. Стек или «куча»

Теперь переходим к «стеку или куче». Здесь не слишком много конфигурационных опций – разве что возможность отобразить информацию, касающуюся регистров ESP и EBP.

По умолчанию стоить режим отображения информации, связанной с ESP (и он же является самым полезным), но его можно сменить на режим отображения информации, связанной с EBP, для чего необходимо кликнуть в этом окне правой кнопкой мыши и выбрать пункт «GO TO EBP», а дальнейшее использование пункта «GO TO ESP» вернёт нас в прежний режим.

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

4. Дамп

У окно дампа есть много режимов отображения, которые можно менять, кликнув правую кнопку мыши в окне дампа и выбрав тот, который нужен. По умолчанию используется используется режим 8-ми байтовый Hex/ASCII.

Режим, используемый по умолчанию, также является и чаще всего используемым, но вместе с тем, у нас есть возможность изменять его на показ дизассемблированного кода (DISASSEMBLE), текста (TEXT) и других форматов (SHORT, LONG, FLOAT).

И, наконец, опция SPECIAL -> PE HEADER, которая, как мы это увидим в ближайших главах, может быть очень полезной.

Подключение плагинов в OllyDbg

OllyDbg позволяет подключать плагины, которые могут оказаться полезными для решения той или иной задачи. Пока мы ограничимся подключением плагина COMMAND BAR, чтобы научиться как это делать.

Скачиваем данный плагин отсюда

После этого распаковываем плагин и смотрим содержимое папки, где это было сделано:

Прежде всего нужно создать папку для плагинов. Я создам её на C:/ и назову PLUGINS.

Разумеется, плагины могут находиться где угодно, но мне нравится размещать всё на C. Как бы то ни было, теперь мы должны сконфигурировать OllyDbg, чтобы она распознавала эту папку как местонахождение всех плагинов.

Для этого идём в OPTIONS->APPEARANCE.

И в открывшемся окне открываем вкладку DIRECTORIES.

Видим, что в качестве пути к плагинам указана директория, где находится сам OllyDbg.exe, и можно было бы помещать плагины туда, но мне нравится держать их отдельно, и тогда нажимаем на PLAGIN PATH->BROWSE, чтобы найти созданную нами папку.

Выбираем папку PLUGINS и сохраняем изменения.

То есть нужно перезапустить Олли, чтобы она признала новую папку с плагинам, но сначала следует скопировать в последнюю скачанный плагин.

Копируем всё содержимое архива в папку PLUGINS.

Теперь все файлы плагина «Command Bar» находятся в папке PLUGINS, в неё же следует помещать и остальные (зачастую можно копировать не все файлы в архиве, а только dll).

Теперь закрываем OllyDbg, если она всё ещё была закрыта, и запускаем по новой. Видим, что в меню PLUGINS появился COMMAND BAR и его опции.

В нижней части OllyDbg видим установленный COMMAND BAR.

Это текстовое поле для ввода команд, которые нам могут пригодиться во многих случаях, и позднее мы увидим их применение, а пока важно научиться подключать плагины. Чтобы деинсталлировать PLUGIN достаточно просто стереть соответствующую dll из папки PLUGINS и перезапустить OllyDbg, и плагин исчезнет

Вместе с тем, благоразумно всегда держать COMMAND BAR включённым

Чтобы деинсталлировать PLUGIN достаточно просто стереть соответствующую dll из папки PLUGINS и перезапустить OllyDbg, и плагин исчезнет. Вместе с тем, благоразумно всегда держать COMMAND BAR включённым.

Снова открываем крэкми CrueHead’в в OllyDbg.

Using Breakpoints

In the «Text strings referenced in putty:.text»
window,
right-click again, and click
«Search text«. In the
«Enter text to search for» box,
click OK.

The instruction at 00417053 appears again.
Right-click this instruction and
click «Toggle breakpoint«,
as shown below.

The address turns red,
as shown below, to indicate that
there’s a breakpoint here.

Right-click again, and click
«Search next«. The instruction
at address 0041CB6E appears.
Right-click it and
click «Toggle breakpoint«.

The address turns red,
as shown below.

In Ollydbg, from the menu bar,
click Debug, Restart.

A box pops up warning you that
«Process ‘putty’ is active».
Click Yes.

In Ollydbg, from the menu bar,
click Debug, Run.

A Putty window opens. Bring it to the
front, as shown below.

Click in the Putty window.
In the «Host Name (or IP address)» box, type

Open

A black window opens and closes
quickly, and the program
stops,
as shown below.

The program stopped at instruction
0041CB6E, as shown in the image above.

We’ll use this instruction to hijack the
program’s execution.

Отладчики

Отладка приложения — это неотъемлемая часть процесса исследования, инструмент, который всегда под рукой у реверсера. В современном мире отладчик должен поддерживать обе интеловские архитектуры — x64 и x86, из этого мы и будем исходить.

Также у нас должна быть возможность отлаживать код, который работает в режиме ядра. Такая нужда периодически возникает, особенно если ты намерен искать zeroday-уязвимости в ядре ОС или реверсить драйверы вирусов. Основных претендентов два: x64dbg и WinDbg. Первый отладчик работает в режиме user mode, второй может отлаживать код в режиме kernel mode.

x64dbg

Этот современный отладчик с весьма приятным интерфейсом — достойный преемник OllyDbg. Поддерживает обе архитектуры — x64 и x86, обладает массой полезнейших плагинов.

Да, безусловно, он не лишен недостатков — в нем до сих пор есть несколько неприятных багов. Однако он активно поддерживается и развивается. Разумеется, из-за того что отладчик работает в пользовательском режиме, он остается уязвимым для многих техник обнаружения отладки. Но этот минус отчасти компенсируется разнообразием плагинов для сокрытия отладчика.

У x64dbg есть встроенный декомпилятор, поддерживается отображение кода в виде графа, можно делать точки останова на чтение, запись, выполнение и доступ, имеется встроенная утилита реконструкции импортов (как x64, так и x86). В общем, что говорить — этот отладчик использовался в узких кругах для того, чтобы победить небезызвестную игровую защиту Denuvo, и успешно справляется с этой задачей!

Почему не OllyDbg

В подборку не попал отладчик OllyDbg — по той причине, что он уже серьезно устарел. Он не поддерживает ни современные ОС, ни архитектуру x64. На официальном сайте приложения был анонс 64-битной версии и даже сообщалось о прогрессе в ее разработке, но сам сайт обновлялся в последний раз в 2014 году. Безусловно, с OllyDbg связана целая эпоха, но, по всей видимости, она прошла. Да и отладчиков kernel mode тоже поубавилось — разработчики забросили Syser Kernel Debugger, а он в свое время был преемником SoftICE.

WinDbg

Если нужно отлаживать ядро или драйвер, то WinDbg нет равных. Этот отладчик поддерживает сама Microsoft, и он входит в состав Windows Driver Kit (WDK). На данный момент это самое актуальное и мощное средство отладки кода ядра. Здесь нет такого приятного интерфейса, как в x64dbg, но и выбора у нас немного — другие отладчики не работают в kernel mode.

WinDbg поддерживает удаленную отладку и умеет скачивать отладочные символы напрямую с серверов Microsoft. Чтобы быстрее настроить его для отладки ядра ОС внутри виртуальных машин, существует надстройка VirtualKD. Безусловно, начинать путь реверсера с WinDbg строго противопоказано, но, когда наберешься опыта и начнешь пробовать разные интересные вещи, он становится необходимостью.

Именно в WinDbg можно запросто посмотреть, как выглядят те или иные системные структуры, и легко дизассемблировать функции NTAPI. Конечно, им можно отлаживать и «обычные» приложения, но лично я предпочитаю распаковывать столь могучий инструмент только при крайней необходимости!

Overview

OllyDumpEx = OllyDump + PE Dumper — obsoleted + useful features

  • Various debuggers supported
  • Select to dump debugee exe, loaded dll or non-listed module
  • Search PE File from memory
  • Multiple Dump mode. Rebuild for typical PE dump, Binary for PE Carving
  • PE32+ supported (Search and Binary Dump mode only available on 32bit debugger)
  • Native 64bit process supported (IDA Pro, WinDbg and x64dbg)
  • ELF supported (both of 32bit and 64bit)
  • Standalone version available
  • Dump any address space as section even if not in original section header
  • Auto calculate many parameters (RawSize, RawOffset, VirtualOffset, …)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector