Целью данного «Введения в крэкинг с нуля, используя OllyDbg», является дать тем, кто только начал осваивать искусство крэкнинга, базовые знания и, вместе с тем, сделать это так, чтобы эти знания позволили в дальнейшем читать и понимать более продвинутые туториалы – такие, которые можно встретить в «Новом курсе от CracksLatinos», который, разумеется, остаётся открытым для новых добавлений и пополнений.
Идея создания курса родилась из-за того, что многие туториалы в «Новом курсе от CracksLations» оказывались слишком сложными для новичков, и те, не сумев достигнуть нужного уровня, оказывались разочарованными и во многих случаях отказывались продолжать. Поэтому целью данного «Введения...» является не повторение прекрасных туториалов из «Нового курса...», число которых уже перевалило за 500, но заложить основу, чтобы те, кто закончит данный курс, смогли читать более сложные пособия. Это, как и всё в нашем ремесле, требует значительных усилий, и главной задачей является сократить их количество, дав базовые знания и позволив в дальнейшем понимать более сложный материал.
Почему OLLYDBG?
Мы не будем здесь рассуждать о вечном противостоянии Soft-Ice против OllyDbg, думаю, что даже фанатики от Soft-Ice признают, что проще начать с OllyDbg, так как о нём много информации и его проще изучать. Нам нужно войти в мир крэкинга через дверь под названием «OllyDbg», а уже потом тот, кому нужно, сможет перейти на любой другой отладчик, который потребуется, так как меняются лишь их способы использования, но суть остаётся неизменной.
Начнём с начала
Сначала нужно вооружиться инструментом, который мы собираемся в основном использовать, для чего кликните
Поскольку мы начинаем с нуля, то для начала нам нужно распаковать скачанный архив в такую папку на жёстком диске, до которой можно легко добраться. Хорошей идеей будет создать папку на диске C:/. Хотя будет работать и в любом другом месте, я буду исходить из того, что выбран диск C:/.
После того, как файл был распакован, заходим в созданную папку и видим:
В ней находится исполняемый файл OLLYDBG.exe, который нам и нужно запустить и ярлык которого я для удобства сделал на своём рабочем столе.
Ок, всё готово к запуску. Кликаем на OllyDbg:
Перед нами повляется сообщение о том, что DLL, находящаяся в библиотеке, старше, чем такая же системная DLL, и если выберем «Да», то тогда старая DLL будет стёрта из папки, а использоваться будет системная. Хотя я не вижу особых различий между этими двумя, тем не менее, предпочитаю ту, которая идёт с дистрибутивом, и поэтому всегда нажимаю «Нет».
Это чистый OllyDbg, и первой программой, которую мы откроем только для того, чтобы ознакомиться с OllyDbg, станет знаменитый
Чтобы открыть файл в 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, но есть ещё окна, которые недоступны напрямую, но могут быть вызваны как через меню, так и через кнопки на панели управления.
Рассмотрим каждую из них.
Кнопка L или VIEW->LOG показывает нам то, что OllyDbg пишет в окне лога. Его можно сконфигурировать на отображение различного рода информации, а по умолчанию в окне лога сохраняется вся информация о запуске, а также информация, связанная с «BREAKPOINTS CONDICIONAL LOGS» (условными логами точек останова). С последней мы встретимся гораздо позднее, а пока давайте посмотрим информацию о запущенном процессе (в нашем случае это крэкми CrueHead’а) и библиотеках, которые он загружает.
Одна из самых главных опций данного окна – это ведение лога в файле на тот случай, если мы хотим сохранять информацию в текстовом файле. Чтобы активировать эту опцию, нажмите на правую кнопку мыши и выберите «LOG TO FILE».
Кнопка E или VIEW->EXECUTABLES показывает нам список модулей, которые использует программа: exe, dll, ocx и прочие.
Здесь также правая кнопка мыши вызывает множество опций, которые пока мы смотреть не будем, но которые мы уже видели при исследовании главного окна OllyDbg.
Кнопка M или VIEW->MEMORY отображает память, занятую нашей программой. Здесь мы видим секции приложения, библиотеки, использующиеся процессом, стек и различные секции, занятые системой, и зачастую программы в процессе выполнения занимают новые секции памяти.
Кликнув правой кнопкой мыши можем сделать SEARCH в памяти, чтобы найти в ней строки различных родов (текстовые, шестнадцатиричные, юникодовые), также есть возможность подстветить точки останова в секциях, равно как и возможность изменить права доступа к последним (выберите SET ACCESS).
Кнопка T или VIEW->THREADS показывает нам список нитей (потоков) программы.
Хотя сейчас мы не знаем что это такое, а узнаем это лишь в последующих главах, ознакомиться с каждым из окон лишним не будет. Пользоваться ими мы научимся позднее.
Кнопка W или VIEW->WINDOWS отображает нам окна программы, но поскольку она ещё не выполняется, то и список окон остаётся пустым.
Кнопка H или VIEW->HANDLES отображает хэндлы, позже я объясню, для чего они служат.
Кнопка C или VIEW->CPU возвращает нас к главному окно OllyDbg.
Кнопка / или VIEW->PATCHES показывает список наложенных патчей, если программа была изменена. Поскольку пока никаких изменений не вносилось, сейчас окно остаётся пустым.
Кнопка K или VIEW->CALL STACK отображает «call stack», списко вызовов, которые нам встретились до того места, где программа остановилась.
Кнопка B или VIEW->BREAKPOINTS вызывает список обычных точек останова, расположенных в программе. Здесь нет ни точек останова аппаратного обеспечения, ни точек останова памяти, только обычные.
Кнопка R или VIEW->REFERENCES показывает окно ссылок, полученных нами в результате поиска ссылок в Олли.
Кнопка «…» или VIEW->RUN TRACE отображает результат выполнения команды RUN TRACE. Здесь мы также можем выбрать опцию LOG TO FILE), чтобы сохраненить результаты трассировки в текстовом файле.
Мы рассмотрели панель с самыми важными кнопками, чтобы вы были знакомы с возможностями, которые они предоставляют, когда мы начнём их более глубокое изучение в последующих главах.
Как сконфигуровать OllyDbg стала JIT (JUST IN TIME DEBUGGER)
Конечно, мы не будем всё время использовать JIT, а только в специальных случаях, так как если случится ошибка с какой-либо запущенной программой на нашей машине, то нам совсем не нужно, чтобы использовалась Олли (по умолчанию в качестве JIT используется dr.watson).
Чтобы сделать OllyDbg JIT-отладчиком, нужно перейти в OPTIONS->JUST IN TIME DEBUGGING
и нажать последовательно кнопки MAKE OLLYDBG JUST IN TIME DEBUGGER y DONE
Чтобы убрать эту функцию, нужно в том же месте нажать на RESTORE JUST IN TIME DEBUGGER и DONE.
Подключение плагинов в 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 включённым.
Снова открываем крэкми CrueHead’в в OllyDbg.
Наиболее полезные клавиши в 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’а, попробовали поставить точки останова, чтобы в следующей главе все эти вещи не вызывали у вас колебаний и сомнений.
Идея создания курса родилась из-за того, что многие туториалы в «Новом курсе от CracksLations» оказывались слишком сложными для новичков, и те, не сумев достигнуть нужного уровня, оказывались разочарованными и во многих случаях отказывались продолжать. Поэтому целью данного «Введения...» является не повторение прекрасных туториалов из «Нового курса...», число которых уже перевалило за 500, но заложить основу, чтобы те, кто закончит данный курс, смогли читать более сложные пособия. Это, как и всё в нашем ремесле, требует значительных усилий, и главной задачей является сократить их количество, дав базовые знания и позволив в дальнейшем понимать более сложный материал.
Почему OLLYDBG?
Мы не будем здесь рассуждать о вечном противостоянии Soft-Ice против OllyDbg, думаю, что даже фанатики от Soft-Ice признают, что проще начать с OllyDbg, так как о нём много информации и его проще изучать. Нам нужно войти в мир крэкинга через дверь под названием «OllyDbg», а уже потом тот, кому нужно, сможет перейти на любой другой отладчик, который потребуется, так как меняются лишь их способы использования, но суть остаётся неизменной.
Начнём с начала
Сначала нужно вооружиться инструментом, который мы собираемся в основном использовать, для чего кликните
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
и скачайте его.![e868a2b9b3d145015c76ff2dbd2a00ff.jpg e868a2b9b3d145015c76ff2dbd2a00ff.jpg](https://dark-time.com/data/attachments/1/1596-6a0e47d0170e44d52339e1f5544b2a26.jpg)
Поскольку мы начинаем с нуля, то для начала нам нужно распаковать скачанный архив в такую папку на жёстком диске, до которой можно легко добраться. Хорошей идеей будет создать папку на диске C:/. Хотя будет работать и в любом другом месте, я буду исходить из того, что выбран диск C:/.
![11e9efb245738c7411dde039b87e6ab1.jpg 11e9efb245738c7411dde039b87e6ab1.jpg](https://dark-time.com/data/attachments/1/1597-49a89b101cb691c18665d193407d9a34.jpg)
После того, как файл был распакован, заходим в созданную папку и видим:
![2f6b34b924a68184294bf27a6cc0db26.jpg 2f6b34b924a68184294bf27a6cc0db26.jpg](https://dark-time.com/data/attachments/1/1598-4a8e4b2a9021f57b3d610cdeadb77c0c.jpg)
В ней находится исполняемый файл OLLYDBG.exe, который нам и нужно запустить и ярлык которого я для удобства сделал на своём рабочем столе.
![e163ef1831d55800f4141d72a77d088b.jpg e163ef1831d55800f4141d72a77d088b.jpg](https://dark-time.com/data/attachments/1/1599-43d35c0f5e13b42bbdc783ad67dd4439.jpg)
Ок, всё готово к запуску. Кликаем на OllyDbg:
![14b7948064bcc10c3a1c20a14c8f6094.jpg 14b7948064bcc10c3a1c20a14c8f6094.jpg](https://dark-time.com/data/attachments/1/1600-2dc3659fbaad7af9e7e262013aa5cf32.jpg)
Перед нами повляется сообщение о том, что DLL, находящаяся в библиотеке, старше, чем такая же системная DLL, и если выберем «Да», то тогда старая DLL будет стёрта из папки, а использоваться будет системная. Хотя я не вижу особых различий между этими двумя, тем не менее, предпочитаю ту, которая идёт с дистрибутивом, и поэтому всегда нажимаю «Нет».
![16a9b796acb46e9492e00acf5ebc600b.jpg 16a9b796acb46e9492e00acf5ebc600b.jpg](https://dark-time.com/data/attachments/1/1601-32a1fce9602b587c50c65a345a189873.jpg)
Это чистый OllyDbg, и первой программой, которую мы откроем только для того, чтобы ознакомиться с OllyDbg, станет знаменитый
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
CrueHead’а, который приложен к данному туториалу.Чтобы открыть файл в OllyDbg, идём в File -> Open или нажимаем на иконку:
![f3b0fb4f79049c7bc7f00d4d32c9dbe7.jpg f3b0fb4f79049c7bc7f00d4d32c9dbe7.jpg](https://dark-time.com/data/attachments/1/1602-5a09cd541dbb387649af021becab20e1.jpg)
Откроется окно, с помощью которого можно найти нужный файл, в данном случае это crackme CrueHead’а.
![bf87f3fc030a5fe55167f4144366ab79.jpg bf87f3fc030a5fe55167f4144366ab79.jpg](https://dark-time.com/data/attachments/1/1603-39638cc6c4f3d1e573dbf5eba5428f33.jpg)
![346da6649f0afa8c1b05e5e1bdcff7a4.jpg 346da6649f0afa8c1b05e5e1bdcff7a4.jpg](https://dark-time.com/data/attachments/1/1604-47c503971f3e12843dceefab0629ec9c.jpg)
Откроется вышеупомянутый crackme, и на данный момент неважно, что совершенно непонятно, что означает открывшийся нам вид – пока мы только пройдёмся по различным частям и функциям OllyDbg и некоторым настройкам, чтобы когда в последующих туториалах будет написано, скажем, «зайдите в DUMP», вы, по крайней мере, знали, где находится эта опция.
![d940c5126b07651d5b1f2d5690fb6bd7.jpg d940c5126b07651d5b1f2d5690fb6bd7.jpg](https://dark-time.com/data/attachments/1/1605-24aca6cc0122ab324968e6f7c0dc949f.jpg)
Здесь мы рассмотрим четыре части главного окна OllyDbg:
1) Дизассемблированный код
Также называется листингом. Тут Олли показывает нам дизассемблированный код программы, которую мы собираемся отлаживать; по умолчанию Олли сконфигурирована так, чтобы анализировать программу при её открытии. Это можно изменить в Options -> DEBUGGING OPTIONS.
![d565a53213fdea52686d8e7342a15523.jpg d565a53213fdea52686d8e7342a15523.jpg](https://dark-time.com/data/attachments/1/1606-6347916219cd80ef2472f1d227883c7c.jpg)
![f079fe341a2bebac541a7241fd74a4b8.jpg f079fe341a2bebac541a7241fd74a4b8.jpg](https://dark-time.com/data/attachments/1/1607-cae4f6ad4ad669bdf9fce9a7e26904f0.jpg)
То есть, если отмечена галочка «AUTO START ANALISIS OF MAIN MODULE», OllyDbg проанализирует программу и покажет о ней дополнительную информацию.
![9db315a1d077fb64348a4e6cfc97a2d0.jpg 9db315a1d077fb64348a4e6cfc97a2d0.jpg](https://dark-time.com/data/attachments/1/1608-415f178b4f5a207d5876200805091b2c.jpg)
Это начало проанализированного листинга крэкми CrueHead’а, и если мы откроем его без анализа, то сможем увидеть разницу.
![b8bf44dccf4a8ce26cbd222562259e69.jpg b8bf44dccf4a8ce26cbd222562259e69.jpg](https://dark-time.com/data/attachments/1/1609-b7b2f3a0f247611ee901b5f0713decf3.jpg)
В окне анализа содержится множество информации, которая, несмотря на то, что пока нам не очень понятна, выглядит весьма интересной. В то же время приятно знать, что её можно в любой момент убрать, если анализ оказался не слишком точным или в него закралась какая-то ошибка.
Зачастую OllyDbg отображает некоторые части программы некорректно, так как ошибочно интерпретирует исполняемый код как данные, и тогда она отображает примерно следующее:
![e6be46abc632bd525bb003cf1e90d1d5.jpg e6be46abc632bd525bb003cf1e90d1d5.jpg](https://dark-time.com/data/attachments/1/1610-33958cfa9ec96a1284a8eb849dae256d.jpg)
В этом случае можно вручную убрать анализ, кликнув на листинге правой кнопкой мыши и выбрав «ANALISIS -> REMOVE ANALYSIS FROM MODULE».
![a69959420493138f72fb1f460e7fc993.jpg a69959420493138f72fb1f460e7fc993.jpg](https://dark-time.com/data/attachments/1/1611-e19c51833cc0fa63635fcf760adcf3d9.jpg)
И тогда листинг отобразится корректно.
![5f16a9949cdd8b2d89253d3a06e5ae4b.jpg 5f16a9949cdd8b2d89253d3a06e5ae4b.jpg](https://dark-time.com/data/attachments/1/1612-c7b9b39881b9c610cec60aff3cbb3789.jpg)
Другой опцией, которой вы можете воспользоваться для облегчения раобты и которая мне лично не очень нравится (но вкусы бывают разные), является подсветка jump (переходов) и call (вызовов) – кликните на листинге правой кнопкой мыши и выберите «APPEARENCE -> HIGHLIGHTING -> JUMPS AND CALLS».
![5a7d12f98ca78a29f593f5a751582493.jpg 5a7d12f98ca78a29f593f5a751582493.jpg](https://dark-time.com/data/attachments/1/1613-33add66984965aeee262206bd1f96b2e.jpg)
Получится следующее:
![ba956adac2cbf722d5c2d98f8b575459.jpg ba956adac2cbf722d5c2d98f8b575459.jpg](https://dark-time.com/data/attachments/1/1614-725e19d6c1da10d7b5cf7ad2bf132b6d.jpg)
Здесь мы видим, что call’ы подсвечены лазурным цветом, а переходы – жёлтым.
Теперь листинг стал более читаемым, но пока у нас нет ни малейшей идеи, что это означает, но хорошо иметь инструмент подготовленным к дальнейшему использованию.
2) Регистры
Второе важное окно – это окно регистров.
![6d75c54954ef318b4cfff47a0defc3d2.jpg 6d75c54954ef318b4cfff47a0defc3d2.jpg](https://dark-time.com/data/attachments/1/1615-067b9cf6ea9e5f7ddeaec17fe89a96f0.jpg)
Вспомним, что окно регистров находится в самой правой части OllyDbg, и там отображается значительное количество информации.
![04a0c7998d029fc83bbc52ab052a4546.jpg 04a0c7998d029fc83bbc52ab052a4546.jpg](https://dark-time.com/data/attachments/1/1616-a8b9a7332c8868ff77a22451d1cec2f4.jpg)
Есть значительно больше информации, которую мы не видим, но можно устанавливать режим отображения в три состояния («VIEW FPU REGISTERS» – отображать FPU-регистры, «VIEW 3D NOW REGISTERS» – отображать “3D NOW”-регистры и «VIEW DEBUG REGISTERS» – отображать отладочные регистры). По умолчанию отображаются первые.
![ab72ad183490313a6cf1ffcd674048af.jpg ab72ad183490313a6cf1ffcd674048af.jpg](https://dark-time.com/data/attachments/1/1617-c63398f7e688a4d17a9fcc5d500c40c8.jpg)
3) Стек или «куча»
Теперь переходим к «стеку или куче». Здесь не слишком много конфигурационных опций – разве что возможность отобразить информацию, касающуюся регистров ESP и EBP.
![fcd40e4974ad72c50269d1d083ca6c7a.jpg fcd40e4974ad72c50269d1d083ca6c7a.jpg](https://dark-time.com/data/attachments/1/1618-e1baaee17f7893b15835fc05e887586c.jpg)
По умолчанию стоить режим отображения информации, связанной с ESP (и он же является самым полезным), но его можно сменить на режим отображения информации, связанной с EBP, для чего необходим кликнуть в этом окне правой кнопкой мыши и выбрать пункт «GO TO EBP», а дальнейшее использование пункта «GO TO ESP» вернёт нас в прежний режим.
![91ab922f0a523bca7642e7b6cc83de52.jpg 91ab922f0a523bca7642e7b6cc83de52.jpg](https://dark-time.com/data/attachments/1/1619-02066d82d2df79ab15e6eb0f7a52c111.jpg)
В дальнейших главах я объясню подробнее функциональность стека, но пока мы рассматриваем только то, что можно изменить с помощью конфигурации.
4) Дамп
У окно дампа есть много режимов отображения, которые можно менять, кликнув правую кнопку мыши в окне дампа и выбрав тот, который нужен. По умолчанию используется используется режим 8-ми байтовый Hex/ASCII.
![0df34be9f579e68f1f783b2573ab1379.jpg 0df34be9f579e68f1f783b2573ab1379.jpg](https://dark-time.com/data/attachments/1/1620-8c0a98f6b3415b71112d844a5a5a9579.jpg)
Режим, используемый по умолчанию, также является и чаще всего используемым, но вместе с тем, у нас есть возможность изменять его на показ дизассемблированного кода (DISASSEMBLE), текста (TEXT) и других форматов (SHORT, LONG, FLOAT).
![55636a41296c0c9743c68e9cc22860e1.jpg 55636a41296c0c9743c68e9cc22860e1.jpg](https://dark-time.com/data/attachments/1/1621-d61f078c23f6fef931710164ce43761f.jpg)
И, накоец, опция SPECIAL -> PE HEADER, которая, как мы это увидим в ближайших главах, может быть очень полезной.
![5ba6d3a14a6bd373e7939cae6714601f.jpg 5ba6d3a14a6bd373e7939cae6714601f.jpg](https://dark-time.com/data/attachments/1/1622-c571e878e02a2e5c73fa306bdc71c6fa.jpg)
Теперь мы знаем основные части главного окна OllyDbg, но есть ещё окна, которые недоступны напрямую, но могут быть вызваны как через меню, так и через кнопки на панели управления.
![fc16d4344028782c16a0a2fd1f81d808.jpg fc16d4344028782c16a0a2fd1f81d808.jpg](https://dark-time.com/data/attachments/1/1623-46671958db0a75bc1c6a9ed06b28736f.jpg)
Рассмотрим каждую из них.
Кнопка L или VIEW->LOG показывает нам то, что OllyDbg пишет в окне лога. Его можно сконфигурировать на отображение различного рода информации, а по умолчанию в окне лога сохраняется вся информация о запуске, а также информация, связанная с «BREAKPOINTS CONDICIONAL LOGS» (условными логами точек останова). С последней мы встретимся гораздо позднее, а пока давайте посмотрим информацию о запущенном процессе (в нашем случае это крэкми CrueHead’а) и библиотеках, которые он загружает.
![30ab81f723e52d9082f5b8a7091ac9b2.jpg 30ab81f723e52d9082f5b8a7091ac9b2.jpg](https://dark-time.com/data/attachments/1/1624-c6803266e8e8529270bdb3908f84b666.jpg)
Одна из самых главных опций данного окна – это ведение лога в файле на тот случай, если мы хотим сохранять информацию в текстовом файле. Чтобы активировать эту опцию, нажмите на правую кнопку мыши и выберите «LOG TO FILE».
![eab8e3d8fe3c542bb2591a06251330a0.jpg eab8e3d8fe3c542bb2591a06251330a0.jpg](https://dark-time.com/data/attachments/1/1625-9784707355b160dbb85243166de1cd79.jpg)
Кнопка E или VIEW->EXECUTABLES показывает нам список модулей, которые использует программа: exe, dll, ocx и прочие.
![1a4bfb8f8b9f6e164d145347d1def041.jpg 1a4bfb8f8b9f6e164d145347d1def041.jpg](https://dark-time.com/data/attachments/1/1626-f59c3b26f567c2ac9d8fcb452bcf6adc.jpg)
Здесь также правая кнопка мыши вызывает множество опций, которые пока мы смотреть не будем, но которые мы уже видели при исследовании главного окна OllyDbg.
Кнопка M или VIEW->MEMORY отображает память, занятую нашей программой. Здесь мы видим секции приложения, библиотеки, использующиеся процессом, стек и различные секции, занятые системой, и зачастую программы в процессе выполнения занимают новые секции памяти.
![21d1556ff9bcc7c5650955bb55d6ace2.jpg 21d1556ff9bcc7c5650955bb55d6ace2.jpg](https://dark-time.com/data/attachments/1/1627-7294645a8dda8d5cd161ebfba53b2faa.jpg)
Кликнув правой кнопкой мыши можем сделать SEARCH в памяти, чтобы найти в ней строки различных родов (текстовые, шестнадцатиричные, юникодовые), также есть возможность подстветить точки останова в секциях, равно как и возможность изменить права доступа к последним (выберите SET ACCESS).
Кнопка T или VIEW->THREADS показывает нам список нитей (потоков) программы.
![4bc9cfc54ca374d5201ce0bcb0639807.jpg 4bc9cfc54ca374d5201ce0bcb0639807.jpg](https://dark-time.com/data/attachments/1/1628-6db24db16b1ed1efe705f046d41cb472.jpg)
Хотя сейчас мы не знаем что это такое, а узнаем это лишь в последующих главах, ознакомиться с каждым из окон лишним не будет. Пользоваться ими мы научимся позднее.
Кнопка W или VIEW->WINDOWS отображает нам окна программы, но поскольку она ещё не выполняется, то и список окон остаётся пустым.
![0db0f3119fb3a2d767d0aab191adb0ac.jpg 0db0f3119fb3a2d767d0aab191adb0ac.jpg](https://dark-time.com/data/attachments/1/1629-5d20705388fd5b181402c5c9321b0258.jpg)
Кнопка H или VIEW->HANDLES отображает хэндлы, позже я объясню, для чего они служат.
![f1722fff82ad8ec35e256ab7104689fb.jpg f1722fff82ad8ec35e256ab7104689fb.jpg](https://dark-time.com/data/attachments/1/1630-996a4ab171f887dd43a77520621d88cd.jpg)
Кнопка C или VIEW->CPU возвращает нас к главному окно OllyDbg.
Кнопка / или VIEW->PATCHES показывает список наложенных патчей, если программа была изменена. Поскольку пока никаких изменений не вносилось, сейчас окно остаётся пустым.
![57f139a0199f5fa26292b615216971f6.jpg 57f139a0199f5fa26292b615216971f6.jpg](https://dark-time.com/data/attachments/1/1631-fd2d6fe93ce2d3e8d2a8c5a3b6260c9d.jpg)
Кнопка K или VIEW->CALL STACK отображает «call stack», списко вызовов, которые нам встретились до того места, где программа остановилась.
![30abec4c91e4468c0fe71a85ea5880f1.jpg 30abec4c91e4468c0fe71a85ea5880f1.jpg](https://dark-time.com/data/attachments/1/1632-d3f4b4e516496439f833b933fe08d51d.jpg)
Кнопка B или VIEW->BREAKPOINTS вызывает список обычных точек останова, расположенных в программе. Здесь нет ни точек останова аппаратного обеспечения, ни точек останова памяти, только обычные.
![6ba2f5738766e113e54c6af4f34fe5e3.jpg 6ba2f5738766e113e54c6af4f34fe5e3.jpg](https://dark-time.com/data/attachments/1/1633-dd9ac03f7273576a873837f13c81e088.jpg)
Кнопка R или VIEW->REFERENCES показывает окно ссылок, полученных нами в результате поиска ссылок в Олли.
![87e61a335168ea68f08b94561525ffb1.jpg 87e61a335168ea68f08b94561525ffb1.jpg](https://dark-time.com/data/attachments/1/1634-e233f3c27c1e3bae497bf0959a12a0d5.jpg)
Кнопка «…» или VIEW->RUN TRACE отображает результат выполнения команды RUN TRACE. Здесь мы также можем выбрать опцию LOG TO FILE), чтобы сохраненить результаты трассировки в текстовом файле.
![e256dfd232cf443131eaca9a746683e9.jpg e256dfd232cf443131eaca9a746683e9.jpg](https://dark-time.com/data/attachments/1/1635-b8b2f18efca8a17474b1bb30839dff56.jpg)
Мы рассмотрели панель с самыми важными кнопками, чтобы вы были знакомы с возможностями, которые они предоставляют, когда мы начнём их более глубокое изучение в последующих главах.
Как сконфигуровать OllyDbg стала JIT (JUST IN TIME DEBUGGER)
Конечно, мы не будем всё время использовать JIT, а только в специальных случаях, так как если случится ошибка с какой-либо запущенной программой на нашей машине, то нам совсем не нужно, чтобы использовалась Олли (по умолчанию в качестве JIT используется dr.watson).
Чтобы сделать OllyDbg JIT-отладчиком, нужно перейти в OPTIONS->JUST IN TIME DEBUGGING
![6959c3e20fd2843d6cbe08f8d3cfae93.jpg 6959c3e20fd2843d6cbe08f8d3cfae93.jpg](https://dark-time.com/data/attachments/1/1636-a64fcdefdabddd73fdb6e3e1f65076b0.jpg)
и нажать последовательно кнопки MAKE OLLYDBG JUST IN TIME DEBUGGER y DONE
![9eb6b746eaffaca3814f823bba8b8d88.jpg 9eb6b746eaffaca3814f823bba8b8d88.jpg](https://dark-time.com/data/attachments/1/1637-dca27886695fdccecd172af366bf3bde.jpg)
Чтобы убрать эту функцию, нужно в том же месте нажать на RESTORE JUST IN TIME DEBUGGER и DONE.
![a323bf2d68f3e25e7047f530e85f52e4.jpg a323bf2d68f3e25e7047f530e85f52e4.jpg](https://dark-time.com/data/attachments/1/1638-41bfdcc290aba5e1fd24a3078eafb3be.jpg)
Подключение плагинов в OllyDbg
OllyDbg позволяет подключать плагины, которые могут оказаться полезными для решения той или иной задачи. Пока мы ограничимся подключением плагина COMMAND BAR, чтобы научиться как это делать.
Скачиваем данный плагин
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
(ссылка, указанная в оригинальной статье, умерла, поэтому я скачал плагин из инета и разместил её на Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
- прим.пер.).![e4a484d3d3342bb9849651a21f79cb46.jpg e4a484d3d3342bb9849651a21f79cb46.jpg](https://dark-time.com/data/attachments/1/1639-4a4bd7ffa10fa0a68b600d72fcba5d41.jpg)
После этого распаковываем плагин и смотрим содержимое папки, где это было сделано:
![5336105bf430e9c81ceac799c072c7b1.jpg 5336105bf430e9c81ceac799c072c7b1.jpg](https://dark-time.com/data/attachments/1/1640-8c99b3f241c358f23a195dc73cc70646.jpg)
Прежде всего нужно создать папку для плагинов. Я создам её на C:/ и назову PLUGINS.
![a8cc4c0e8026ea1dfc6c605cb2f38968.jpg a8cc4c0e8026ea1dfc6c605cb2f38968.jpg](https://dark-time.com/data/attachments/1/1641-a19e1f63d2f8af2ac76997c708deb85b.jpg)
Разумеется, плагины могут находиться где угодно, но мне нравится размещать всё на C. Как бы то ни было, теперь мы должны сконфигурировать OllyDbg, чтобы она распознавала эту папку как местонахождение всех плагинов.
Для этого идём в OPTIONS->APPEARANCE.
![0b04f2a9d4c65093c88b5654e969d58f.jpg 0b04f2a9d4c65093c88b5654e969d58f.jpg](https://dark-time.com/data/attachments/1/1642-ee028e95795799f1923c868e0814578b.jpg)
И в открывшемся окне открываем вкладку DIRECTORIES.
![28589d7dfd73eedb95d25bac2487fdcf.jpg 28589d7dfd73eedb95d25bac2487fdcf.jpg](https://dark-time.com/data/attachments/1/1643-64e8fd1aee514e1ae64f94e0989e1961.jpg)
Видим, что в качестве пути к плагинам указана директория, где находится сам OllyDbg.exe, и можно было бы помещать плагины туда, но мне нравится держать их отдельно, и тогда нажимем на PLAGIN PATH->BROWSE, чтобы найти созданную нами папку.
![fa65f6b6be24fd831475b14b6b60ca85.jpg fa65f6b6be24fd831475b14b6b60ca85.jpg](https://dark-time.com/data/attachments/1/1644-703310d621faeda5c6b2e96faa529cf6.jpg)
Выбираем папку PLUGINS и сохраняем изменения.
![ac4d3c5fb8f6fdb4dc97f20f495c3332.jpg ac4d3c5fb8f6fdb4dc97f20f495c3332.jpg](https://dark-time.com/data/attachments/1/1645-124739e2dde12472b131bced7a4c9fc8.jpg)
То есть нужно перезапустить Олли, чтобы она признала новую папку с плагинам, но сначала следует скопировать в последнюю скачанный плагин.
![68b827427dc9d2e4536ed79021243062.jpg 68b827427dc9d2e4536ed79021243062.jpg](https://dark-time.com/data/attachments/1/1646-1cdf208a72bed0a03eed759e8ecae65d.jpg)
Копируем всё содержимое архива в папку PLUGINS.
![08c135672e22cfdf1047e26ad29846ce.jpg 08c135672e22cfdf1047e26ad29846ce.jpg](https://dark-time.com/data/attachments/1/1647-a183582a6c252d2a72bc4b352392fb0f.jpg)
Теперь все файлы плагина «Command Bar» находятся в папке PLUGINS, в неё же следует помещать и остальные (зачастую можно копировать не все файлы в архиве, а только dll).
Теперь закрываем OllyDbg, если она всё ещё была закрыта, и запускаем по новой. Видим, что в меню PLUGINS появился COMMAND BAR и его опции.
![dd7a649c45aafcfe05df126ac91634f3.jpg dd7a649c45aafcfe05df126ac91634f3.jpg](https://dark-time.com/data/attachments/1/1648-57ca581b5f9533d25d08d22ce97d2b40.jpg)
В нижней части OllyDbg видим установленный COMMAND BAR.
![5348da87747eae4ef5b1939a2195cd7e.jpg 5348da87747eae4ef5b1939a2195cd7e.jpg](https://dark-time.com/data/attachments/1/1649-91d443dda7625ae50720ee87577dabf5.jpg)
Это текстовое поле для ввода команд, которые нам могут пригодиться во многих случаях, и позднее мы увидим их применение, а пока важно научиться подключать плагины.
Чтобы деинсталлировать PLUGIN достаточно просто стереть соответствующую dll из папки PLUGINS и перезапустить OllyDbg, и плагин исчезнет. Вместе с тем, благоразумно всегда держать COMMAND BAR включённым.
Снова открываем крэкми CrueHead’в в OllyDbg.
Наиболее полезные клавиши в OllyDbg следующие:
F7: Выполняет одну строку кода (если находимся на CALL, то переходим внутрь вызванного участка кода)
F8: Выполняет одну строку кода (если находимся на CALL, то просто выполняет вызов без перехода внутрь и переходит на следующую за CALL строку).
Это два вида ручной трассировки очень разные и в каких случаях использовать каждую из них мы рассмотрим позже.
F2: устанавливает обычную точку останова на отмеченной линии. Чтобы убрать эту точку останова, надо ещё раз нажать F2.
Например:
![03cf5ebd0cffb045686b1a476581fa05.jpg 03cf5ebd0cffb045686b1a476581fa05.jpg](https://dark-time.com/data/attachments/1/1650-9ccc6a6a76cded3e0ac3045a564e3e75.jpg)
Хотим установить точку установа в позиции 40101A, поэтому отмечаем эту линию с помощью мыши.
![9bb768fe58e0d023b5e0295f39298a80.jpg 9bb768fe58e0d023b5e0295f39298a80.jpg](https://dark-time.com/data/attachments/1/1651-d14dbfed3765608c47a2767b96951387.jpg)
С помощью одного клика мыши она помечается и становится серого цвета как на картинке. Затем нажимаем F2.
![c9cda3ed7297c6cbdc2e1499661a50ec.jpg c9cda3ed7297c6cbdc2e1499661a50ec.jpg](https://dark-time.com/data/attachments/1/1652-f5c7f6d92089ebcdd8df4422a714dc31.jpg)
Видим, что соответствующая позиция в первой колонке становится красной, что говорит о том, что здесь есть точка останова. Нажав F2 ещё раз можно её убрать.
F9: Запускает программу, которая будет выполняться до тех пор, пока не встретить точку останова, не совершиться какое-либо исключение или же просто прекратит работу по каким-либо причинам. Когда программа запущена, в нижнем правом угле OllyDbg отображается слово RUNNING.
![ed859273a629b6f880501911fdcd66e2.jpg ed859273a629b6f880501911fdcd66e2.jpg](https://dark-time.com/data/attachments/1/1653-8b62273dadd9ce37769ad549cd552bfb.jpg)
Запустив крэкми CrueHead’а, мы увидим следующее:
![94682aaaf31ca1bc7a2bf13c0bdee0fa.jpg 94682aaaf31ca1bc7a2bf13c0bdee0fa.jpg](https://dark-time.com/data/attachments/1/1654-b0a1f58057da7910c1b2c8ca33787d62.jpg)
Чтобы временно прекратить выполнение программы, нужно нажать F12 или DEBUG->PAUSE.
![990a7be2cb7a17ba73b53a6b9d62bd18.jpg 990a7be2cb7a17ba73b53a6b9d62bd18.jpg](https://dark-time.com/data/attachments/1/1655-ea7e04733bc464e15a603ae7b7be74f9.jpg)
Видим, что OllyDbg отображает слово PAUSED (пауза). Продолжить выполнение программы можно нажав F9 или DEBUG->RUN.
Чтобы закрыть отлаживаемую программу выберите DEBUG->CLOSE.
![76a7cc9b093042f706931454a62de804.jpg 76a7cc9b093042f706931454a62de804.jpg](https://dark-time.com/data/attachments/1/1656-d77165acb4c52e6b4a62812adb98dc30.jpg)
Это был краткий обзор OllyDbg, более глубокое изучение множества опций и возможностей которой мы продолжим изучать в последующих главах. Главное, чтобы вы скачали программу, сконфигурировали, ещё раз посмотрели всё, о чём было рассказано в этом туториале, так же подключили плагин, позапускали и поостанавливали крэкми CrueHead’а, попробовали поставить точки останова, чтобы в следующей главе все эти вещи не вызывали у вас колебаний и сомнений.