Ollydbg как пользоваться на русском языке. использование ollydbg. настройка графической схемы
Содержание:
- OllySocketTrace
- x64dbg Plugins
- Top Debugging 64-bit downloads
- Подключение плагинов в OllyDbg
- OllyGraph
- Части главного окна
- Дизассемблеры
- Ollydbg-backup
- Как устанавливать плагины?
- IDA Plugins
- OllyMigrate
- Настройка графической схемы
- Отладчики
- uberstealth
- OllyDumpEx
- Наиболее полезные клавиши в OllyDbg следующие:
- Запуск программы
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. Трасса переданных данных
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.
Top Debugging 64-bit downloads
OllyDbg 2.01
A handy and reliable assembler level analyzing debugger
Freeware
tags: API debugger, debug application, code analysis, debug, debugger, assembler
Kingo Android Root 1.5.0
KingoRoot for Android, the best One Click Root Tool/APK for free.
Freeware
tags: kingoroot, root, android root, how to root, galaxy root, root Samsung, root download, android root software, root android phone, android root app download, root android, free android root, free android root software
232Analyzer 5.6.1
RS232 Serial Data COM Port Monitor Protocol Analyzer Terminal Software Debugger
Shareware | $79.95
tags: RS232, RS485, RS422, TTL, USB, Serial, Converter, Monitor, Terminal, Protocol, Analyzer, Software
JD-GUI 1.6.6
Use this fast Java decompiler to reduce the time and energy
Freeware
tags: Java decompiler, decompile JAR, Java decompilation, decompile, Java, decompiler
VBReFormer 6.4.5
VBReFormer is the most advanced publically available decompiler for Visual Basic
Shareware | $60.00
tags: vb decompiler, decompiler vb, decompiler, decompilateur, decompileur, discompiler, disassembler, vb5, vb6, vbreformer, vb-reformer, traduction, translation, Visual Basic Codes Sources, Visual Basic sources
Monster Debugger 3.02
Open source debugger for Adobe Flash, Flex and AIR projects
Open Source
tags: AIR debugger, application debugger, debug application, debugger, debug, development
GlowCode 64-bit 10.0 Build 1002
Diagnose and debug Win32 EXEs and DLLs developed with Visual C++ and VisualBasic
Trialware | $499.00
tags: Memory Leak Detection x64, Code Profiling x64, Function Call Tracing x64, memory x64, leak x64, detection x64
THRSim11 5.30b
With this program you can edit, assemble, simulate and debug 68HC11 programs.
Freeware
tags: THRSim11, 68HC11, simulator, assembler, debugger
Bug Tracker Deluxe 4.12
Bug management software for software developers.
Shareware | $75.00
tags: bug tracking software, defect tracking software, tracking tool
Comm Echo 1.1
Free loopback test tool for serial port,TCP/IP and UDP port communication.
Freeware
tags: serial port, com port, tcp, TCP/IP, udp, rs232, rs232 debug, communication, debug, loopback test
Подключение плагинов в 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.
OllyGraph
Одна из фич, которая меня особенно привлекает в IDA Pro, — возможно представить функцию в виде графа. Так намного удобнее анализировать код, сразу становится видно, каким образом мы дошли до того или иного участка, какие условия и как сработали. Плюс можно еще посмотреть граф вызовов, чтобы понять, из каких мест программы вызывается исследуемая функция. К счастью, данная возможность есть теперь и в OllyDbg, надо лишь установить плагин OllyGraph. Он позволяет представить программу в виде блок-схем, схожих с теми, что строятся в IDA Pro. Более того, для визуализации используется тулза wingraph32, входящая в состав иды. Для версии 1.10 есть альтернативный плагин OllyFlow bit.ly/14lNtpb — немного улучшенная версия OllyGraph от того же автора.
Части главного окна
Ок, всё готово к запуску. Кликаем на 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, которая, как мы это увидим в ближайших главах, может быть очень полезной.
Дизассемблеры
Сложно представить себе реверс без инструментов статического анализа кода. На сегодняшний день дела с дизассемблерами обстоят немногим лучше, чем с отладчиками, но все-таки можно выделить фаворитов в этой области. Признанный стандарт антивирусных лабораторий — это дизассемблер IDA Pro. Второе место по востребованности занимает фреймворк для реверс-инжиниринга Radare2 (хотя многие считают, что Radare2 не уступает IDA).
IDA Disassembler
Существует две версии IDA — платная (Pro) и бесплатная (Starter). Бесплатная версия урезана по количеству поддерживаемых архитектур — она понимает только x86, кроме того, она не поддерживает плагины. Платная версия лишена подобных ограничений: она поддерживает внушительное количество архитектур процессоров и позволяет подключать расширения.
В IDA есть встроенный отладчик, весьма простенький по набору функций, но к его самобытному интерфейсу придется приноровиться. Также IDA может быть укомплектован дополнением Hex-Rays — декомпилятором исходного кода приложения в код на C. Это полезнейшее дополнение, которое значительно ускоряет анализ программы.
В целом IDA — мощнейший и прекрасно отполированный инструмент, который развивался много лет. Жаль только, что профессиональная версия стоит в районе 500–1000 долларов в зависимости от вида лицензии и кому попало не продается. Кто попало в результате выкручивается как может.
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Ollydbg-backup
Во время работы над очередным бинарником реверсеру приходится добавлять достаточно много своей информации: писать комментарии к отреверсенным функциям, чтобы на следующий день не изучать заново алгоритм их работы и входные параметры, ставить брейкпоинты и так далее. Вся эта служебная информация автоматически сохраняется отладчиком в UDD-файле. Но случается так, что во время падений дебаггера или его очередной переустановки эти файлы теряются. И надо начинать анализ заново. Чтобы избежать такой печальной ситуации, можно воспользоваться плагином ollydbg-backup, который позволяет сделать бэкап этой информации, сохранив ее в CSV-файл, из которого ее можно легко загрузить обратно в отладчик. CSV-файл имеет следующую структуру:
Ollydbg-backup. Бэкап служебной информации в CSV-файл
Как устанавливать плагины?
Для начала необходимо создать в директории программы папку с названием Plugins. Это позволит в дальнейшем избежать замусоривания основной директории, а в случае необходимости без труда отыскать неработоспособный/конфликтный плагин. Далее копируем DLL-файл плагина в созданную директорию, после чего запускаем отладчик и указываем путь к этой папке:
- OllyDBG v1.10: выбираем Options -> Appearance и закладку Directories. В пункте Plugin path указываем путь к папке с плагинами.
- OllyDBG v2.01h: выбираем Options -> Options и раздел Directories. В пункте Plugin directory указываем путь к папке с плагинами.
Перезапускаем отладчик и ищем появившийся пункт в меню Plugins.
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.
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 .
Отладчики
Отладка приложения — это неотъемлемая часть процесса исследования, инструмент, который всегда под рукой у реверсера. В современном мире отладчик должен поддерживать обе интеловские архитектуры — 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. Конечно, им можно отлаживать и «обычные» приложения, но лично я предпочитаю распаковывать столь могучий инструмент только при крайней необходимости!
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.
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 и других).
Проект активно развивается и постоянно тестируется автором на совместимость с последними версиями поддерживаемых отладчиков.
Наиболее полезные клавиши в OllyDbg следующие:
F7: Выполняет одну строку кода (если находимся на CALL, то переходим внутрь вызванного участка кода)
F8: Выполняет одну строку кода (если находимся на CALL, то просто выполняет вызов без перехода внутрь и переходит на следующую за CALL строку).
Это два вида ручной трассировки очень разные и в каких случаях использовать каждую из них мы рассмотрим позже.
F2: устанавливает обычную точку останова на отмеченной линии. Чтобы убрать эту точку останова, надо ещё раз нажать F2.
Например:
Хотим установить точку установа в позиции 40101A, поэтому отмечаем эту линию с помощью мыши.
С помощью одного клика мыши она помечается и становится серого цвета как на картинке. Затем нажимаем F2.
Видим, что соответствующая позиция в первой колонке становится красной, что говорит о том, что здесь есть точка останова. Нажав F2 ещё раз можно её убрать.
F9: Запускает программу, которая будет выполняться до тех пор, пока не встретит точку останова, не совершиться какое-либо исключение или же просто прекратит работу по каким-либо причинам. Когда программа запущена, в нижнем правом угле OllyDbg отображается слово RUNNING.
Запустив крэкми CrueHead’а, мы увидим следующее:
Чтобы временно прекратить выполнение программы, нужно нажать F12 или DEBUG->PAUSE.
Видим, что OllyDbg отображает слово PAUSED (пауза). Продолжить выполнение программы можно нажав F9 или DEBUG->RUN.
Чтобы закрыть отлаживаемую программу выберите DEBUG->CLOSE.
Это был краткий обзор OllyDbg, более глубокое изучение множества опций и возможностей которой мы продолжим изучать в последующих главах. Главное, чтобы вы скачали программу, сконфигурировали, ещё раз посмотрели всё, о чём было рассказано в этом туториале, так же подключили плагин, позапускали и поостанавливали крэкми CrueHead’а, попробовали поставить точки останова, чтобы в следующей главе все эти вещи не вызывали у вас колебаний и сомнений.
Рикардо Нарваха, пер. Aquila
Запуск программы
Если вы посмотрите в левый верхний угол Олли вы увидите желтое окно, на котором написано “Paused”. Это говорит нам о том, что выполнение программы на данный момент приостановлено (на точке входа в данном случае) и вы можете сделать необходимые вам действия. Так давайте что-нибудь сделаем! Нажмите клавишу F9 (либо кликните на “Run”). После этого наша программа начнет выполнение и высветит диалоговое окно. Это окно может отобразится позади окна Олли, так что если вы его вдруг не видите – попробуйте свернуть отладчик.
В том окне, где раньше было написано “Paused” теперь написано “Runned”. Это означает, что приложение на данный момент запущено, но запущено внутри Олли, что дает нам возможность взаимодействовать с этой программой. Давайте посмотрим, как это происходит. Если вы случайно закроете окно нашей программы, что бы загрузить ее снова, – вернитесь к отладчику и нажмите комбинацию клавиш ctrl-F2 (или кликните на кнопку Restart из меню Debug). Так вы снова попадете на точку входа приложения и теперь можете снова его запустить.
Теперь попробуйте следующее: когда программа запущена, нажмите на кнопу паузы в Олли (или клавишу F2, или кликните Debug-Pause). Это остановит выполнение программы в текущем месте исполнения
Если вы в этот момент обратите внимание на окно программы, вы увидите что оно как бы заморожено (либо оно может вообще не отображаться). Это так, потому что когда программа на паузе – ее окно не обновляется
Теперь нажмите F9 снова и приложение снова станет активным. Если что-то пойдет не так– вы всегда можете перезагрузить приложение, нажав комбинацию клавиш ctrl-F2, либо кликнув на Debug-Restart. И теперь, после перезагрузки, можете запускать программу снова.