Введение в крэкинг с нуля, используя OllyDbg - Глава 1

  • На форуме работает ручное одобрение пользователей. Это значит, что, если Ваша причина регистрации не соответствует тематике форума, а также Вы используете временную почту, Ваша учётная запись будет отклонена без возможности повторной регистрации. В дальнейшем - пожизненная блокировка обоих аккаунтов за создание мультиаккаунта.
  • Мы обновили Tor зеркало до v3!
    Для входа используйте следующий url: darkv3nw2...bzad.onion/
  • Мы вновь вернули telegram чат форуму, вступайте, общайтесь, задавайте любые вопросы как администрации, так и пользователям!
    Ссылка: https://t.me/chat_dark_time

AnGel

Администратор
Команда форума

AnGel

Администратор
Команда форума
27 Авг 2015
3,411
2,025
Целью данного «Введения в крэкинг с нуля, используя OllyDbg», является дать тем, кто только начал осваивать искусство крэкнинга, базовые знания и, вместе с тем, сделать это так, чтобы эти знания позволили в дальнейшем читать и понимать более продвинутые туториалы – такие, которые можно встретить в «Новом курсе от CracksLatinos», который, разумеется, остаётся открытым для новых добавлений и пополнений.

Идея создания курса родилась из-за того, что многие туториалы в «Новом курсе от CracksLations» оказывались слишком сложными для новичков, и те, не сумев достигнуть нужного уровня, оказывались разочарованными и во многих случаях отказывались продолжать. Поэтому целью данного «Введения...» является не повторение прекрасных туториалов из «Нового курса...», число которых уже перевалило за 500, но заложить основу, чтобы те, кто закончит данный курс, смогли читать более сложные пособия. Это, как и всё в нашем ремесле, требует значительных усилий, и главной задачей является сократить их количество, дав базовые знания и позволив в дальнейшем понимать более сложный материал.

Почему OLLYDBG?

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

Начнём с начала

Сначала нужно вооружиться инструментом, который мы собираемся в основном использовать, для чего кликните
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
и скачайте его.

e868a2b9b3d145015c76ff2dbd2a00ff.jpg

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

11e9efb245738c7411dde039b87e6ab1.jpg

После того, как файл был распакован, заходим в созданную папку и видим:

2f6b34b924a68184294bf27a6cc0db26.jpg

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

e163ef1831d55800f4141d72a77d088b.jpg

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

14b7948064bcc10c3a1c20a14c8f6094.jpg

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

16a9b796acb46e9492e00acf5ebc600b.jpg

Это чистый OllyDbg, и первой программой, которую мы откроем только для того, чтобы ознакомиться с OllyDbg, станет знаменитый
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
CrueHead’а, который приложен к данному туториалу.

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

f3b0fb4f79049c7bc7f00d4d32c9dbe7.jpg

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

bf87f3fc030a5fe55167f4144366ab79.jpg 346da6649f0afa8c1b05e5e1bdcff7a4.jpg

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

d940c5126b07651d5b1f2d5690fb6bd7.jpg

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

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

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

d565a53213fdea52686d8e7342a15523.jpg f079fe341a2bebac541a7241fd74a4b8.jpg

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

9db315a1d077fb64348a4e6cfc97a2d0.jpg

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

b8bf44dccf4a8ce26cbd222562259e69.jpg

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

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

e6be46abc632bd525bb003cf1e90d1d5.jpg

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

a69959420493138f72fb1f460e7fc993.jpg

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

5f16a9949cdd8b2d89253d3a06e5ae4b.jpg

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

5a7d12f98ca78a29f593f5a751582493.jpg

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

ba956adac2cbf722d5c2d98f8b575459.jpg

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

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

2) Регистры

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

6d75c54954ef318b4cfff47a0defc3d2.jpg

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

04a0c7998d029fc83bbc52ab052a4546.jpg

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

ab72ad183490313a6cf1ffcd674048af.jpg

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

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

fcd40e4974ad72c50269d1d083ca6c7a.jpg

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

91ab922f0a523bca7642e7b6cc83de52.jpg

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

4) Дамп

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

0df34be9f579e68f1f783b2573ab1379.jpg

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

55636a41296c0c9743c68e9cc22860e1.jpg

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

5ba6d3a14a6bd373e7939cae6714601f.jpg

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

fc16d4344028782c16a0a2fd1f81d808.jpg

Рассмотрим каждую из них.

Кнопка L или VIEW->LOG показывает нам то, что OllyDbg пишет в окне лога. Его можно сконфигурировать на отображение различного рода информации, а по умолчанию в окне лога сохраняется вся информация о запуске, а также информация, связанная с «BREAKPOINTS CONDICIONAL LOGS» (условными логами точек останова). С последней мы встретимся гораздо позднее, а пока давайте посмотрим информацию о запущенном процессе (в нашем случае это крэкми CrueHead’а) и библиотеках, которые он загружает.

30ab81f723e52d9082f5b8a7091ac9b2.jpg

Одна из самых главных опций данного окна – это ведение лога в файле на тот случай, если мы хотим сохранять информацию в текстовом файле. Чтобы активировать эту опцию, нажмите на правую кнопку мыши и выберите «LOG TO FILE».

eab8e3d8fe3c542bb2591a06251330a0.jpg

Кнопка E или VIEW->EXECUTABLES показывает нам список модулей, которые использует программа: exe, dll, ocx и прочие.

1a4bfb8f8b9f6e164d145347d1def041.jpg

Здесь также правая кнопка мыши вызывает множество опций, которые пока мы смотреть не будем, но которые мы уже видели при исследовании главного окна OllyDbg.

Кнопка M или VIEW->MEMORY отображает память, занятую нашей программой. Здесь мы видим секции приложения, библиотеки, использующиеся процессом, стек и различные секции, занятые системой, и зачастую программы в процессе выполнения занимают новые секции памяти.

21d1556ff9bcc7c5650955bb55d6ace2.jpg

Кликнув правой кнопкой мыши можем сделать SEARCH в памяти, чтобы найти в ней строки различных родов (текстовые, шестнадцатиричные, юникодовые), также есть возможность подстветить точки останова в секциях, равно как и возможность изменить права доступа к последним (выберите SET ACCESS).

Кнопка T или VIEW->THREADS показывает нам список нитей (потоков) программы.

4bc9cfc54ca374d5201ce0bcb0639807.jpg

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

Кнопка W или VIEW->WINDOWS отображает нам окна программы, но поскольку она ещё не выполняется, то и список окон остаётся пустым. 0db0f3119fb3a2d767d0aab191adb0ac.jpg

Кнопка H или VIEW->HANDLES отображает хэндлы, позже я объясню, для чего они служат.

f1722fff82ad8ec35e256ab7104689fb.jpg

Кнопка C или VIEW->CPU возвращает нас к главному окно OllyDbg.

Кнопка / или VIEW->PATCHES показывает список наложенных патчей, если программа была изменена. Поскольку пока никаких изменений не вносилось, сейчас окно остаётся пустым.

57f139a0199f5fa26292b615216971f6.jpg

Кнопка K или VIEW->CALL STACK отображает «call stack», списко вызовов, которые нам встретились до того места, где программа остановилась.

30abec4c91e4468c0fe71a85ea5880f1.jpg

Кнопка B или VIEW->BREAKPOINTS вызывает список обычных точек останова, расположенных в программе. Здесь нет ни точек останова аппаратного обеспечения, ни точек останова памяти, только обычные.

6ba2f5738766e113e54c6af4f34fe5e3.jpg

Кнопка R или VIEW->REFERENCES показывает окно ссылок, полученных нами в результате поиска ссылок в Олли.

87e61a335168ea68f08b94561525ffb1.jpg

Кнопка «…» или VIEW->RUN TRACE отображает результат выполнения команды RUN TRACE. Здесь мы также можем выбрать опцию LOG TO FILE), чтобы сохраненить результаты трассировки в текстовом файле.

e256dfd232cf443131eaca9a746683e9.jpg

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

Как сконфигуровать OllyDbg стала JIT (JUST IN TIME DEBUGGER)

Конечно, мы не будем всё время использовать JIT, а только в специальных случаях, так как если случится ошибка с какой-либо запущенной программой на нашей машине, то нам совсем не нужно, чтобы использовалась Олли (по умолчанию в качестве JIT используется dr.watson).

Чтобы сделать OllyDbg JIT-отладчиком, нужно перейти в OPTIONS->JUST IN TIME DEBUGGING

6959c3e20fd2843d6cbe08f8d3cfae93.jpg

и нажать последовательно кнопки MAKE OLLYDBG JUST IN TIME DEBUGGER y DONE

9eb6b746eaffaca3814f823bba8b8d88.jpg

Чтобы убрать эту функцию, нужно в том же месте нажать на RESTORE JUST IN TIME DEBUGGER и DONE.

a323bf2d68f3e25e7047f530e85f52e4.jpg

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

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

Скачиваем данный плагин
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
(ссылка, указанная в оригинальной статье, умерла, поэтому я скачал плагин из инета и разместил её на
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
- прим.пер.).

e4a484d3d3342bb9849651a21f79cb46.jpg

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

5336105bf430e9c81ceac799c072c7b1.jpg

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

a8cc4c0e8026ea1dfc6c605cb2f38968.jpg

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

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

0b04f2a9d4c65093c88b5654e969d58f.jpg

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

28589d7dfd73eedb95d25bac2487fdcf.jpg

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

fa65f6b6be24fd831475b14b6b60ca85.jpg

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

ac4d3c5fb8f6fdb4dc97f20f495c3332.jpg

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

68b827427dc9d2e4536ed79021243062.jpg

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

08c135672e22cfdf1047e26ad29846ce.jpg

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

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

dd7a649c45aafcfe05df126ac91634f3.jpg

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

5348da87747eae4ef5b1939a2195cd7e.jpg

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

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

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

Наиболее полезные клавиши в OllyDbg следующие:

F7: Выполняет одну строку кода (если находимся на CALL, то переходим внутрь вызванного участка кода)

F8: Выполняет одну строку кода (если находимся на CALL, то просто выполняет вызов без перехода внутрь и переходит на следующую за CALL строку).

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

F2: устанавливает обычную точку останова на отмеченной линии. Чтобы убрать эту точку останова, надо ещё раз нажать F2.

Например:

03cf5ebd0cffb045686b1a476581fa05.jpg

Хотим установить точку установа в позиции 40101A, поэтому отмечаем эту линию с помощью мыши.

9bb768fe58e0d023b5e0295f39298a80.jpg

С помощью одного клика мыши она помечается и становится серого цвета как на картинке. Затем нажимаем F2.

c9cda3ed7297c6cbdc2e1499661a50ec.jpg

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

F9: Запускает программу, которая будет выполняться до тех пор, пока не встретить точку останова, не совершиться какое-либо исключение или же просто прекратит работу по каким-либо причинам. Когда программа запущена, в нижнем правом угле OllyDbg отображается слово RUNNING.

ed859273a629b6f880501911fdcd66e2.jpg

Запустив крэкми CrueHead’а, мы увидим следующее:

94682aaaf31ca1bc7a2bf13c0bdee0fa.jpg

Чтобы временно прекратить выполнение программы, нужно нажать F12 или DEBUG->PAUSE.

990a7be2cb7a17ba73b53a6b9d62bd18.jpg

Видим, что OllyDbg отображает слово PAUSED (пауза). Продолжить выполнение программы можно нажав F9 или DEBUG->RUN.

Чтобы закрыть отлаживаемую программу выберите DEBUG->CLOSE.

76a7cc9b093042f706931454a62de804.jpg

Это был краткий обзор OllyDbg, более глубокое изучение множества опций и возможностей которой мы продолжим изучать в последующих главах. Главное, чтобы вы скачали программу, сконфигурировали, ещё раз посмотрели всё, о чём было рассказано в этом туториале, так же подключили плагин, позапускали и поостанавливали крэкми CrueHead’а, попробовали поставить точки останова, чтобы в следующей главе все эти вещи не вызывали у вас колебаний и сомнений.
 
  • Лайк
Reactions: Gl.Korolb

О нас

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

    Dark-Time 2015 - 2022

    При поддержке: XenForo.Info

Быстрая навигация

Меню пользователя